在 R 中向 igraph 添加文本

Adding Text to an igraph in R

我有以下代码,感谢

library(igraph)

DF <- data.frame(in. = 1:6, out. = c(3, 3, 5, 5, 7, 7)) 

g <- graph_from_edgelist(as.matrix(DF[2:1]))
lay <- layout_as_tree(g)
plot(as.undirected(g), layout = lay %*% diag(c(1, -1)))

现在,我需要在此基础上添加一些文本:

DF <- data.frame(in. = 1:6, out. = c(3, 3, 5, 5, 7, 7), 
date = c('2019-11-01', '2019-11-01', '2020-01-01',  '2020-01-01', '2020-12-31', '2020-12-31') ) 

我想在顶层的一侧显示 2019-11-01(或者更好,在每个级别的两个节点之间),然后在下一层显示 2020-01-01,然后接下来是“2020-12-31”,底层什么都没有。

这可能吗?

希望我理解正确。您可以只添加带坐标的文本。例如,坐标 0,0 将文本放在中间。您可以将任何文本放置到任何位置。

g <- graph_from_edgelist(as.matrix(DF[2:1]))
lay <- layout_as_tree(g)
plot(as.undirected(g), layout = lay %*% diag(c(1, -1)))
text(lay[1,1], (lay[1,2]+lay[3,2]/2),"2019-11-01")

您可以将 date 作为属性添加到图对象 g 中,还可以绘制有向图 g 但带有不可见箭头,例如 edge.arrow.size = 0

g <- graph_from_data_frame(cbind(rev(DF), date))
lay <- layout_as_tree(g)
plot(g, layout = lay %*% diag(c(1, -1)), edge.label = E(g)$date, edge.arrow.size = 0)