首页 > 解决方案 > 可视化 iGraph 和标签对齐

问题描述

编码

library(igraph)

g <- graph.tree(n = 2 ^ 3 - 1, children = 2)
node_labels <- c("", "Group A", "Group B", "(1)Text", "(2)I am a longer text", "(3)I am a long long long text", "(4)X")
lay = layout.reingold.tilford(g)  

plot(g,
     vertex.size = 4,                  # node size
     vertex.color = '#C4D8E2',          # node color
     vertex.label = node_labels,        # node labels
     vertex.label.dist = 5,             # node label size
     vertex.label.font = 2,             # node label type (bold)
     vertex.label.degree=0.0,
     margin=c(0,0,0,0),
     layout=-lay[, 2:1]
)

给了我一个带有标签的图表。如何对齐标签 1 .. 4,它们左对齐,在圆圈旁边而不是中心对齐?从我的角度来看,第 3 项是正确的。切换到 ggraph 将是另一种选择,但在这里旋转标签不起作用。

在此处输入图像描述

标签: rlabeligraphtext-alignmentvertex

解决方案


这里是计算代码:

library(igraph)

g <- graph.tree(n = 2 ^ 3 - 1, children = 2)
node_labels <- c("", "Group A", "Group B", "(1)Text", "(2)I am a longer text", "(3)I am a long long long text", "(4)X")
lay = layout.reingold.tilford(g)  

t1 <- sapply(as.vector( node_labels), FUN = strwidth,units='in')
t2 <- (t1 - min(t1))/ (max(t1) - min(t1))*3+0.9


plot(g,
     vertex.size = 4,                  # node size
     vertex.color = '#C4D8E2',          # node color
     vertex.label = node_labels,        # node labels
     vertex.label.dist = t2,             # node label size
     vertex.label.font = 2,             # node label type (bold)
     vertex.label.degree=0.0,
     margin=c(0,0,0,0),
     layout=-lay[, 2:1]
)

这有点好,但我不能完美地做到这一点。


推荐阅读