r - 增加 igraph 节点之间的距离

标签 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

另一方面,如果我告诉绘图命令不要重新缩放,那么我会得到以下结果: enter image description here

其中的模式是可辨别的,但一半的图表偏离了情节。这不是绘图大小的问题,就好像我增加了 png 的尺寸一样,它仍然使图形远离绘图边缘居中。

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

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

如何展开图表的节点或重新调整图表的大小并使其居中?

最佳答案

选项 1:使顶点变小

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

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

# Use the tkplot option to edit your graph in GUI
tkplot (net)

注意:tkplot 将图形输出为 eps。如果您想进一步编辑它或将其导出为 pdf,我建议使用 inkscape(我将它用于所有图形编辑 - 只需在 RStudio 中将图形另存为 pdf 并在 inkscape 中编辑)。 对于 eps 的情况,如果您使用的是 Windows 计算机,则需要调整 inkscape 才能打开此格式。一个非常简短且详细的过程here:

关于r - 增加 igraph 节点之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32857024/

相关文章:

r - 使用 `across()` 创建具有多个其他列的函数的新列

r - 用动态变量子集 R

python - IGRAPH Python - 如何找到模块化的源代码?

r - 如何将大量 igraph 组合成一个 igraph - R

r - 将数据框转换为R中的附属网络

c++ - 在应用程序文件夹中为 C/C++ 安装库 "IGRAPH"

r - 如何用R中的频率表获得中位数?

r - 如何更改 Shinydashboard 中侧边栏的字体大小

r - R 中的双向赋值运算符

r - 如何使用 R 为多重网络中的边缘着色