Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 可视化图形和标签对齐_R_Label_Igraph_Text Alignment_Vertex - Fatal编程技术网

R 可视化图形和标签对齐

R 可视化图形和标签对齐,r,label,igraph,text-alignment,vertex,R,Label,Igraph,Text Alignment,Vertex,代码 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.siz

代码

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]
)
库(igraph)

g如果您可以手动更改每个标签的距离,如下所示-

plot(g,
     vertex.size = 4,                  
     vertex.color = '#C4D8E2',          
     vertex.label = node_labels,        
     vertex.label.dist = c(0,0,0,0,8,12,0), # vector of distance
     vertex.label.font = 2,            
     vertex.label.degree=0.0,
     margin=c(0,0,0,0),
     layout=-lay[, 2:1]
)
或者,您可能希望创建一个函数来获取每个顶点的长度。这是我留给你的即兴创作

t1 <- sapply(node_labels, FUN = nchar)
t2 <- (t1 - min(t1))/ (max(t1) - min(t1))
t2 <- t2*12


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

t1这里是带计算的代码:

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]
)
库(igraph)

嗨,Vikash,我会选择函数,但我认为这取决于使用的字体。我必须找到确定字符串长度的方法。是的,取决于字体。字体将是所有标签的全局字体。你可以考虑使用我提供的替代解决方案,在这里我计算字符并用以获得距离向量。您可以通过增加t2*15或减少t2*6来更改乘法->t2*12。希望这有帮助!真奇怪。我不能让它工作。我试着计算绳子的宽度,但效果并不理想。