zes*_*sla 4 r igraph network-analysis ggraph
我需要在 r 中使用 ggraph 生成一个网络。我想要的是通过权重变量(或节点的大小)调整边缘宽度。有谁知道我该怎么做?多谢。
示例代码如下:
library(ggraph)
library(igraph)
data=data.frame(w1=rep('like', 5),
w2 = c('apple', 'orange', 'pear','peach', 'banana'),
weight= c(2,3,5,8, 15))
data %>%
graph_from_data_frame() %>%
ggraph(layout = "fr") +
geom_edge_link(alpha = .25) +
geom_node_point(color = "blue", size = 2) +
geom_node_text(aes(label = name), repel = TRUE)
Run Code Online (Sandbox Code Playgroud)
width aes是的,你可以用大多数的来做到这一点geom_edge_*。此外,您还可以scale_edge_width根据加权变量来微调最小/最大宽度。请参阅下面的两个示例。
另外,我相信这种审美存在问题ggforce(这也给我带来了麻烦)。ggraph确保您已更新到和的最新版本ggforce。
library(ggraph)
library(igraph)
data=data.frame(w1=rep('like', 5),
w2 = c('apple', 'orange', 'pear','peach', 'banana'),
weight= c(2,3,5,8, 15))
Run Code Online (Sandbox Code Playgroud)
第一个具有默认权重
data %>%
graph_from_data_frame() %>%
ggraph(layout = "fr") +
geom_edge_link(alpha = .25,
aes(width = weight)) +
geom_node_point(color = "blue", size = 2) +
geom_node_text(aes(label = name), repel = TRUE)+
theme_graph()+
labs(title = 'Graph with weighted edges',
subtitle = 'No scaling')
Run Code Online (Sandbox Code Playgroud)
用于scale_edges_width设置范围。注意 - scale_edges* 可以采用多个参数。
data %>%
graph_from_data_frame() %>%
ggraph(layout = "fr") +
geom_edge_link(alpha = .25,
aes(width = weight)) +
geom_node_point(color = "blue", size = 2) +
geom_node_text(aes(label = name), repel = TRUE)+
scale_edge_width(range = c(1, 20))+ # control size
theme_graph()+
labs(title = 'Graph with weighted edges',
subtitle = 'Scaling add with scale_edge_width()')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6767 次 |
| 最近记录: |