增加igraph节点之间的距离

时间:2015-09-30 02:59:30

标签: r igraph

我有一张使用igraph制作的图表。我想分散节点。到目前为止我找到的唯一方法是缩放布局并强制绘图命令不重新缩放。

png("kmeansColouredNetwork.png", width=1200,height = 1000)
col=c("yellow", "saddlebrown", "brown1","chartreuse2", "chocolate1","darkorange" ,"deepskyblue1", "hotpink1","plum2")
for(i in 1:9){
  V(graph)$cluster[which(V(graph)$name %in% kmeans[,i])]<-col[i]
}
V(graph)$color=V(graph)$cluster
coords <- layout.fruchterman.reingold(graph)*0.5
plot(graph, layout = coords, vertex.label=NA, rescale=FALSE,  vertex.size=degree(graph)*.25,vertex.color=V(graph)$cluster)
labels = paste("cluster:", 1:length(colours))
legend("left",legend=labels, col=col, pch=16, title="K means clustered subgroups")
dev.off()

如果我不重新缩放,中央高度连接的节点聚集在一起,我得到一个这样的图形,其中图形体中的模式无法辨别: enter image description here

另一方面,如果我告诉plot命令不要重新缩放,那么我得到这个: enter image description here

模式是可辨别的,但图表的一半不在图中。这不是绘图大小的问题,就像我增加了png的尺寸一样,它仍然将图形放在绘图边缘的中心。

这不是布局问题 - 我尝试过fruchterman.reingold,layout_nicely,reingold.tilford,layout.circle,布局随机,同样的事情发生了。

显然曾经有一个变量来设置节点之间的排斥因子,但似乎已经弃用了。

如何将图表的节点展开或重新缩放并重新定位图?

2 个答案:

答案 0 :(得分:3)

这不是我的答案,只是在stackoverflow上找到:
igraph axes xlim ylim plot incorrectly

基本上,您可以设置ylim,xlim和asp。您可以设置要显示的图形的哪个部分(与xlim和ylim一样)以及两个轴是否相互依赖。

plot(g, rescale = FALSE, ylim=c(1,4),xlim=c(-17,24), asp = 0)

答案 1 :(得分:1)

选项1:使顶点变小

http://htvlive.1c656bad.cdnviet.com/903e50e4d06db85d81fc84b49abec4081480474746/htv7.720p.stream/playlist.m3u8

选项2(如果顶点之间的距离对您不重要):

node.size= c(10,10,10)
plot(net, vertex.size=node.size*0.25)

注意:tkplot将图形输出为eps。如果你想进一步编辑它或将其导出为pdf我建议使用inkscape(我将它用于我的所有图形编辑 - 只需将图形保存为RSt中的pdf并在inkscape中编辑它)。 对于eps的情况,如果你在Windows机器上,你需要调整inkscape来打开这种格式。一个非常简短的过程,详细here:

相关问题