igraph绘图:在Kamada-Kawai布局中顶点太近

时间:2015-06-24 18:44:11

标签: r layout igraph

我正在从边缘列表中绘制一个有向网络,到目前为止已经创建了一个类似于树的图(参见here)。

看起来不错,但是所有节点都太靠近了。我想保持它的形状,同时扩展节点更多。这是给我上面图片的代码:

library(igraph)
ref <- read.csv("my-ref.csv", as.is=T)
el <- graph.data.frame(ref, directed=T)
lay.kk <- layout.kamada.kawai(el, niter=1000, kkconst=50)
plot.igraph(el, lay=lay.kk, vertex.label=NA, vertex.size=2, vertex.color="black")

我试过搞乱kkconst,但这似乎没有改变任何东西。非常感谢任何提示!

3 个答案:

答案 0 :(得分:3)

Kamada-Kawai布局对于断开连接的图形并不能很好地工作,因为断开连接的组件往往会逐渐消失&#34;彼此。由于igraph缩放整个绘图以适合画布,因此组件彼此之间的距离越远,节点在组件内的距离越近。请尝试使用Fruchterman-Reingold布局。

答案 1 :(得分:3)

正如Tamás建议的那样,使用layout.fruchterman.reingold()可能会获得更好的结果。您可以使用以下参数微调此功能:

require(igraph)
g <- erdoss.renyi.game(n = 100, p.or.m = 0.04)
lo <- layout.fruchterman.reingold(g, repulserad = vcount(g)^2.8, 
    area = vcount(g)^2.3, niter = 1000)
plot(g, layout = lo, vertex.size = 3, vertex.frame.color = NULL, 
    vertex.label.dist = 0.5, vertex.label.cex = 0.7, edge.width = 0.5)

这些值为我带来了低重叠,清晰但紧凑的布局。尝试稍微改变它们,看看它们对布局的影响。我为plot()设置的参数也有助于使可视化更加清晰。

答案 2 :(得分:0)

我发布了类似的问题here,我发布了以下答案

选项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 GUI将允许您以交互方式更改布局类型。

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