igraph固定节点坐标布局

时间:2012-06-28 22:19:08

标签: r igraph

我发现这个answer非常有用。它可以帮助我绘制网络/图形并选择图中节点的坐标。

然而,布局将坐标重新调整为-1到1.首先,我试图找出它是如何做到这一点但不能。它会做这样的事吗??

(coordinate - mean(coordinates))/(coordinate + mean(coordinates)

第二种方法是保留原始坐标吗?我喜欢用图表制作轴,因此不希望重新调整所有内容。

2 个答案:

答案 0 :(得分:9)

第一个问题的答案在plot.igraph函数的源代码中;在R提示符下键入plot.igraph以获取完整的源代码。那里有一部分说:

layout <- layout.norm(layout, -1, 1, -1, 1)

layout.normigraph的另一个功能,可以为你带来魔力;输入layout.norm以查看其工作原理。

现在,第二个问题的答案非常简单;只需将rescale=F传递给plot的参数,这会使igraph跳过调用plot.igraph的{​​{1}}中的整个分支,这样它就可以使用您原来的layout.norm坐标。然后,您可以像往常一样使用xlimylim来设置X和Y轴的限制。

答案 1 :(得分:0)

  set.seed(111)
  ig <- graph_from_data_frame(as.data.frame(matrix(sample(letters,40,rep=TRUE),nc=2)))
  set.seed(123)
  ig.layout <- layout.fruchterman.reingold(ig)
  rownames(ig.layout) <- V(ig)$name
  par(bg="white",mar=c(0,0,0,0),oma=c(0,0,0,0))
  plot.igraph(ig,layout=ig.layout,vertex.color=adjustcolor("gray",alpha.f=0.5),rescale=FALSE,xlim=c(4,11),ylim=c(4,11))
  set.seed(321)
  ig.sub <- subgraph(ig,sample(V(ig)$name,5))
  plot.igraph(ig.sub,layout=ig.layout[V(ig.sub)$name,],add=TRUE,vertex.color=adjustcolor("orange",alpha.f=0.5),rescale=FALSE)

此代码输出图形,其中橙色节点随后添加。

enter image description here