igraph绘图时出现重复顶点标签的原因排查及解决求助
标签重复问题解决方案
问题根源
graph_from_incidence_matrix() 函数会生成二部图结构,顶点总数为输入矩阵的行数+列数,你代码中传入的 vertex.label = Data$X1 长度仅等于矩阵行数,R在向量长度不匹配时会自动循环复用值,最终导致标签重复。
另外你代码中重复定义了vertex.size、label.dist参数,多余的参数会被覆盖,建议删除冗余定义。
修复方法
二部图生成时会自动将矩阵的行名、列名存入顶点的name属性,直接调用该属性即可获得长度完全匹配的标签,无需额外从外部Data对象传入标签:
library(igraph) n <- graph_from_incidence_matrix(alzheimer) pal <- rainbow(5, alpha=.5) plot(n, vertex.label = V(n)$name, vertex.size = 10, vertex.label.font = 3, vertex.label.cex = 0.58, vertex.color = pal, edge.color = "gray", vertex.label.dist = 1, asp = 9/16, layout = layout.fruchterman.reingold )
可选自定义设置
如果需要区分二部图两类顶点的标签样式,可以通过顶点自带的type属性分类设置:
# type=FALSE对应矩阵行顶点,type=TRUE对应矩阵列顶点 V(n)$label.cex <- ifelse(V(n)$type, 0.4, 0.6) V(n)$label.color <- ifelse(V(n)$type, "darkred", "navy")
内容的提问来源于stack exchange,提问作者Neha Dhiman
相关产品推荐
相关产品推荐

