如何在igraph()中设置逆边权重

问题描述 投票:0回答:1

我改编了以下代码,取自here,以显示加权和无向网络图:

 # Create data
 set.seed(1)
 data <- matrix(sample(0:3, 25, replace=TRUE), nrow=5)
 data[lower.tri(data)] <- NA
 rownames(data) <- LETTERS[1:5]
 colnames(data) <- LETTERS[1:5]

 # Transform it in a graph format
 network <- graph_from_adjacency_matrix(data, weighted = TRUE)

 # Remove edges with NA weights
 network <- delete_edges(network, E(network)[is.na(E(network)$weight)])

 # Make the graph
 ggraph(network) +
   geom_edge_link(aes(edge_width=E(network)$weight), edge_colour="black", edge_alpha=0.3) +
   geom_node_point(color="#69b3a2", size=5) +
   geom_node_text(aes(label=name), repel = TRUE, size=8, color="#69b3a2") +
   theme_void() +
   theme(
     legend.position="none",
     plot.margin=unit(rep(1,4), "cm")
   )

但是,就我而言,较低的值表示更强的连接,因此我试图弄清楚如何创建一个图形,其中较小的值具有较厚的边缘,即反转

network$weight
的值。在此示例图中,D>C 的边缘最厚,A>C 的边缘最薄。

r igraph
1个回答
0
投票

如果你的所有权重都是正数,你可以使用辅助函数来翻转值,例如

flip <- function(x) max(x)-x+1
flip(c(10, 9, 1))
# [1]  1  2 10

然后在映射边缘权重时使用它

geom_edge_link(aes(edge_width=flip(weight)), edge_colour="black", edge_alpha=0.3)
© www.soinside.com 2019 - 2024. All rights reserved.