ggraph:根据属性的顶点位置

时间:2019-11-17 15:53:26

标签: r igraph ggraph

假设我有一个igraph图,如下所示:

library(ggraph)
library(igraph)

vertices <- data.frame(name = LETTERS[1:6],
                       time = c(0, 9, 9, 10, 10, 10))
edges <- data.frame(from = c("A", "B", "B", "A", "C", "C"),
                    to =   c("B", "D", "E", "C", "E", "F"))
graph <- graph_from_data_frame(edges, 
                               directed = TRUE, 
                               vertices = vertices)

出于目前的目的,该图将始终是一棵树或DAG,我想使用ggraph以树状布局绘制该图。我的问题是:如何使用time顶点属性为y值绘制此图

我可以在aes(y = time)中设置geom_node_point来正确定位节点,但是边缘不会随之变化:

ggraph(graph, layout = "tree") + 
  geom_node_point(aes(y = time)) +
  geom_edge_link() +
  theme_bw()

reprex package(v0.3.0)于2019-11-17创建

y中将yendtime美观设置为geom_edge_link会引发错误。

我是ggraph的新手,所以我对如何解决此问题感到困惑。

1 个答案:

答案 0 :(得分:1)

这并不漂亮,但是您可以通过创建自己的布局来实现。

LO = layout_as_tree(graph)
LO[, 2] = V(graph)$time

ggraph(graph, layout = LO) + 
  geom_node_point() +
  geom_edge_link() +
  theme_bw()

graph with time as y-axis in layout