我正在从边缘列表中绘制一个有向网络,到目前为止已经创建了一个类似于树的图(参见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,但这似乎没有改变任何东西。非常感谢任何提示!
答案 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: