Да, вы можете сделать это с 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))
Первый с весами по умолчанию
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')
Использование 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()')