用更细的线可视化更大的重量
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 替换为一些其他系数以获得所需的结果。
我尝试使用 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 替换为一些其他系数以获得所需的结果。