【发布时间】:2019-10-30 13:30:40
【问题描述】:
所以,正如标题所示,我需要能够绘制一些 igraph 的图表并能够比较它们。为此,我相信传递坐标然后绘制它们就足够了。然后我发现这些图是根据提供的坐标呈现的,但也根据节点的数量(或子网的数量或我无法理解的任何其他参数)呈现。为了理解这个问题,这里举个例子(与欧几里得距离相关的部分被注释了,因为它需要一个特定的包,但我也发布了输出):
library(igraph)
#library(TSdist)
smallNet <- graph(edges=c(1,2), n=2, directed=F)
V(smallNet)$name <- c("mint", "pepper")
# first try
dev.new()
V(smallNet)$x <- c(10, 23)
V(smallNet)$y <- c(29, 36)
plot(smallNet, vertex.label.color="midnightblue", vertex.size=40, vertex.color="thistle1", layout=layout_nicely)
#print(paste("distance ", EuclideanDistance(V(smallNet)$x, V(smallNet)$y)))
#[1] "distance 23.0217288664427"
# second try
dev.new()
V(smallNet)$x <- c(1400, 1894)
V(smallNet)$y <- c(3700, 4140)
plot(smallNet, vertex.label.color="midnightblue", vertex.size=40, vertex.color="thistle1", layout=layout_nicely)
#print(paste("distance ", EuclideanDistance(V(smallNet)$x, V(smallNet)$y)))
#[1] "distance 3214.73420363177"
# third try
dev.new()
V(smallNet)$x <- c(10000, 26230)
V(smallNet)$y <- c(13800, 32150)
plot(smallNet, vertex.label.color="midnightblue", vertex.size=40, vertex.color="thistle1", layout=layout_nicely)
#print(paste("distance ", EuclideanDistance(V(smallNet)$x, V(smallNet)$y)))
#[1] "distance 7034.65706342534"
关键是(欧几里得)距离是不同的,但是,如果我查看这些图,显然没有任何变化。另一方面,something 肯定是不同的,因为节点的距离在增加。
我注意到添加几个节点可以提高可视化效果,但我仍然相信我得到的图并没有以某种方式尊重实际距离。这是另一个包含更多节点的示例代码:
# first try
evenBigger <- graph(edges=c(1,2, 2,3, 3,1, 4,5), n=5, directed=F)
V(evenBigger)$name <- c("pear", "mango", "blueberry", "coconut", "fig")
dev.new()
V(evenBigger)$x <- c(0, 25, 50, 70, 60)
V(evenBigger)$y <- c(0, 80, 20, 120, 40)
plot(evenBigger, vertex.label.color="midnightblue", vertex.size=40, vertex.color="thistle1", layout=layout_nicely)
# second try
evenBigger <- graph(edges=c(1,2, 2,3, 3,1, 4,5, 6,6), n=6, directed=F)
V(evenBigger)$name <- c("pear", "mango", "blueberry", "coconut", "fig", "jujube")
dev.new()
V(evenBigger)$x <- c(0, 25, 50, 70, 120, 2000)
V(evenBigger)$y <- c(0, 80, 20, 120, 140, 2000)
plot(evenBigger, vertex.label.color="midnightblue", vertex.size=40, vertex.color="thistle1", layout=layout_nicely)
看起来在这两个新示例中,某事发生了变化,因为与其他节点相比,现在 jujube 节点离得很远。从图形的角度来看,现在这两个网络是否具有可比性?如果不是(我相信是这样)...我应该怎么做才能使它们具有可比性?
我尝试按照here 的说明设置 xlim 和 ylim,但它看起来不起作用:
# first try
evenBigger <- graph(edges=c(1,2, 2,3, 3,1, 4,5), n=5, directed=F)
V(evenBigger)$name <- c("pear", "mango", "blueberry", "coconut", "fig")
dev.new()
V(evenBigger)$x <- c(0, 25, 50, 70, 60)
V(evenBigger)$y <- c(0, 80, 20, 120, 40)
plot(evenBigger, vertex.label.color="midnightblue", vertex.size=40, vertex.color="thistle1", xlim=c(0, 2500), ylim=c(0, 2500), layout=layout_nicely)
# second try
evenBigger <- graph(edges=c(1,2, 2,3, 3,1, 4,5, 6,6), n=6, directed=F)
V(evenBigger)$name <- c("pear", "mango", "blueberry", "coconut", "fig", "jujube")
dev.new()
V(evenBigger)$x <- c(0, 25, 50, 70, 120, 2000)
V(evenBigger)$y <- c(0, 80, 20, 120, 140, 2000)
plot(evenBigger, vertex.label.color="midnightblue", vertex.size=40, vertex.color="thistle1", xlim=c(0, 2500), ylim=c(0, 2500), layout=layout_nicely)
非常欢迎提出建议!
【问题讨论】: