我尝试创建网络布局的图片(以最终说明网络如何随时间演变)。我的方法是创建一个最终网络(参见 net0),然后逐个节点(及其边缘)删除。
如何确保图表的布局保持不变? (并且不重新缩放!) 最终目标:具有不同节点数但与最终图 net0 中定义的布局完全相同的图序列
我的方法:
- 将相同的布局添加到简化的网络图中会得到相同的布局,但之前删除的节点不会消失
- 只采用原始布局的一个子集,但随后我的图表会重新缩放。
代码:
library(igraph)
data <- structure(c( "A","A","D","D","F","G","B","B","D","G","D","G","G","F","H","H","G","D","I","I"),.Dim = c(10L, 2L), .Dimnames = list(NULL,c("source","target")))
layout <-structure(c(-3.26,-5.50,-2.33,0.48,-3.37,-7.44,-10.00,-8.32,-5.09,-5.19,-3.15,-2.22,-1.9,-4.00),.Dim = c(7L, 2L), .Dimnames = list(NULL, c("coordinate.1", "coordinate.2")))
net0 <- graph.edgelist(data, directed=FALSE)
par(pin=c(9, 4.7), mai=c(0.5, 0.1, 0.15, 0.1))
plot(net0, layout=layout)
net <- delete.edges(net0, c(9,10))
net <- delete.vertices(net, c("I"))
plot(net, layout=layout)
net <- delete.edges(net0, c(9,10))
net <- delete.vertices(net, c("I"))
plot(net, layout=layout[1:6,])
最佳答案
将布局添加为 x
和 y
顶点属性:
V(net0)$x <- layout[,1]
V(net0)$y <- layout[,2]
这些由 plot()
自动使用,参见 ?layout.auto
,默认布局。
关于r - 删除 R 中的节点并固定图形的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22352819/