gpt4 book ai didi

r - 如何在 R 中绘制无向连通图?

转载 作者:行者123 更新时间:2023-12-02 15:44:42 26 4
gpt4 key购买 nike

我想像上传的图片一样绘制图形(这是一个无向连通图)。

我想使用邻接矩阵来绘制它。

所以我的问题是如何从邻接矩阵绘制图形。

理想情况下,我希望情节看起来像所附图片。

我尝试了 R 中的 igraph 包:


data <- matrix(c(0,1,0,0,1,
1,0,1,0,0,
0,1,0,1,0,
0,0,1,0,1,
1,0,0,1,0),nrow=5,ncol = 5)
colnames(data) = rownames(data) = LETTERS[1:5]
data

network <- graph_from_adjacency_matrix(data)


plot(network)


但这会造成一个循环。

有什么帮助吗?

enter image description here

最佳答案

只需要矩阵的上(或下)三角形为 1,其他地方为 0。确保您还设置了 mode = "upper"

library(igraph)

data <- matrix(0, 5, 5, dimnames = list(LETTERS[1:5], LETTERS[1:5]))
data[upper.tri(data)] <- 1

data
#> A B C D E
#> A 0 1 1 1 1
#> B 0 0 1 1 1
#> C 0 0 0 1 1
#> D 0 0 0 0 1
#> E 0 0 0 0 0

network <- graph_from_adjacency_matrix(data, mode = 'upper')

plot(network)

enter image description here

或者,如果您想要更加自定义的外观(我认为您的草图比默认的 igraph 绘图更美观),请使用 ggraph:

library(ggraph)

ggraph(network) +
geom_edge_link(aes(label = paste0('a', 1:10)), angle_calc = 'along',
vjust = -0.5, label_colour = 'red') +
geom_node_circle(aes(r = 0.1), fill = "#dbdccf") +
geom_node_text(aes(label = name), color = 'blue4', fontface = 2,
size = 8) +
coord_equal() +
theme_graph() +
theme(plot.background = element_rect(color = NA, fill = "#f5f6e9"),
panel.grid.major.y = element_line(size = 0.5, color = 'gray90'),
panel.grid.minor.y = element_line(size = 0.5, color = 'gray90'))

enter image description here

关于r - 如何在 R 中绘制无向连通图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74642716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com