[英]Network Diagram with Date Axis
我想創建一個 X 軸及時固定的定向網絡可視化。
假設我有以下數據:
ID | Label | 日期 |
---|---|---|
1 | 一個 | 2022-02-01 |
2 | b | 2022-03-13 |
3 | c | 2022-03-22 |
4 | d | 2022-04-20 |
從 | 至 |
---|---|
1 | 2 |
3 | 1 |
3 | 4 |
我想創建一個如下所示的可視化:
我嘗試使用 ggraph,但我很難根據日期修復 X 軸。
歡迎任何建議!
下面是一些啟動代碼:
library(tidyverse)
library(tidygraph)
#>
#> Attaching package: 'tidygraph'
#> The following object is masked from 'package:stats':
#>
#> filter
library(ggraph)
nodes <- tibble(id=1:4,label=letters[1:4], date=as.Date(c("2022-02-01",
"2022-03-13",
"2022-03-22",
"2022-04-20")))
nodes
#> # A tibble: 4 × 3
#> id label date
#> <int> <chr> <date>
#> 1 1 a 2022-02-01
#> 2 2 b 2022-03-13
#> 3 3 c 2022-03-22
#> 4 4 d 2022-04-20
edges <- tibble(from = c(1L, 3L, 3L),
to = c(2L, 1L, 4L))
edges
#> # A tibble: 3 × 2
#> from to
#> <int> <int>
#> 1 1 2
#> 2 3 1
#> 3 3 4
graph <- tbl_graph(nodes = nodes, edges = edges, directed=TRUE)
graph
#> # A tbl_graph: 4 nodes and 3 edges
#> #
#> # A rooted tree
#> #
#> # Node Data: 4 × 3 (active)
#> id label date
#> <int> <chr> <date>
#> 1 1 a 2022-02-01
#> 2 2 b 2022-03-13
#> 3 3 c 2022-03-22
#> 4 4 d 2022-04-20
#> #
#> # Edge Data: 3 × 2
#> from to
#> <int> <int>
#> 1 1 2
#> 2 3 1
#> 3 3 4
ggraph(graph) +
geom_edge_link(end_cap = circle(3, 'mm'),
arrow = arrow(length = unit(4, 'mm'))) +
geom_node_label(aes(label = label))
#> Using `tree` as default layout
使用reprex v2.0.2創建於 2022-09-07
您可以使用create_layout
獲取包含 x 和 y 位置的數據框。 只需將date
列復制到create_layout
output 的x
列中。 這個 object 可以作為 ggraph 的數據ggraph
:
my_layout <- create_layout(graph, "tree")
my_layout$x <- my_layout$date
ggraph(my_layout) +
geom_edge_link(end_cap = circle(3, 'mm'),
arrow = arrow(length = unit(3, 'mm'))) +
geom_node_label(aes(label = label), label.r = unit(4, "mm"), size = 8) +
scale_x_date(limits = as.Date(c("2022-01-01", "2022-06-30")),
date_breaks = "month", date_labels = "%b", name = NULL) +
scale_y_reverse(name = NULL) +
theme_classic(base_size = 20) +
theme(axis.line.y = element_blank(),
axis.ticks.y = element_blank(),
axis.text.y = element_blank())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.