用更细的线可视化更大的重量

Visualizing larger weights with thinner lines

我尝试使用 R 中的网络可视化国家之间的文化距离数据。距离存储在矩阵中,例如:

          AT      BE     CH     CZ
AT    0       0.00276 0.148  0.109
BE    0.00276 0       0.145  0.112
CH    0.148   0.145   0      0.257
CZ    0.109   0.112   0.257  0    

通过使用 igraph 包,我得到了这样的图像:

我使用的代码:

library(maps)
library(igraph)

df<-data.frame(from = c("at", "be", "ch", "cz"), to= c("be", "ch", "cz", "at"),
weight=c(0.003,0.145,0.257,0.109))
meta <- data.frame("name"=c("at", "be", "ch", "cz"),
"lon"=c(14.55,4.46,8.227,14.4738), "lat"=c(47.51,50.5,46.818,50.0755))

g <- graph.data.frame(df, directed=F, vertices=meta)
E(g)$color <- "brown"
# since weights are small, multiplying by 10
E(g)$width <- E(g)$weight*10
lo <- as.matrix(meta[,2:3])
map("world",  xlim = c(-8, 30),
ylim = c(35, 55), asp=1)
plot(g, layout=lo, add = TRUE, rescale = FALSE)

现在的问题是,如果相应的粗细较大,我希望线条细一些。而igraph恰恰相反,画的线越粗权重越大

有什么办法可以逆转吗?

为什么不以某种方式将宽度定义为与重量成反比?例如,使用

E(g)$width <- 3 - E(g)$weight * 10

给予

您可以进一步试验,将 3 and/or 10 替换为一些其他系数以获得所需的结果。