我发现这个answer非常有用。它可以帮助我绘制网络/图形并选择图中节点的坐标。
然而,布局将坐标重新调整为-1到1.首先,我试图找出它是如何做到这一点但不能。它会做这样的事吗??
(coordinate - mean(coordinates))/(coordinate + mean(coordinates)
第二种方法是保留原始坐标吗?我喜欢用图表制作轴,因此不希望重新调整所有内容。
答案 0 :(得分:9)
第一个问题的答案在plot.igraph
函数的源代码中;在R提示符下键入plot.igraph
以获取完整的源代码。那里有一部分说:
layout <- layout.norm(layout, -1, 1, -1, 1)
layout.norm
是igraph
的另一个功能,可以为你带来魔力;输入layout.norm
以查看其工作原理。
现在,第二个问题的答案非常简单;只需将rescale=F
传递给plot
的参数,这会使igraph
跳过调用plot.igraph
的{{1}}中的整个分支,这样它就可以使用您原来的layout.norm
坐标。然后,您可以像往常一样使用xlim
和ylim
来设置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)
此代码输出图形,其中橙色节点随后添加。