Как настроить ширину ребер по весу в сети ggraph в r - PullRequest
0 голосов
/ 16 мая 2019

Мне нужно создать сеть с ggraph в r.То, что я хочу, это настроить ширину ребра по весу переменной (или размер узлов).Кто-нибудь знает, как я могу это сделать?Большое спасибо.

Пример кода ниже:

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)

1 Ответ

0 голосов
/ 25 мая 2019

Да, вы можете сделать это с 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')

enter image description here

Использование 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()')

enter image description here

...