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