Проблема с использованием ggraph для построения совместного появления биграмм, некоторые строки не отображаются - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь нанести совместное вхождение биграмм (из Text Mining with R ) так: enter image description here

Или вот так: enter image description here

Но, следуя в точности тем же кодам, что и в книге, мои графики пропускают большую часть линий и цветов.Не уверен, что это потому, что я пропустил некоторые важные шаги или пропустил некоторые пакеты.

Ниже приведена более простая версия для иллюстрации:

library(dplyr)
library(ggplot2)
library(igraph)
library(ggraph)

terms <- sample(letters[1:10],50,replace=T)
count <- sample(1:50,25,replace=T)

bigrams <- data_frame(term1=terms[1:25],term2=terms[26:50],occur=count) %>%
  arrange(desc(occur)) %>%
  graph_from_data_frame()

a <- grid::arrow(type = "closed", length = unit(.15, "inches"))

И я получаю графикиэто просто неправильно (даже легенда не отображается должным образом):

ggraph(bigrams, layout = "fr") +
  geom_edge_link(aes(edge_alpha = occur), show.legend = FALSE,  
                 arrow = a, end_cap = circle(.07, 'inches')) +
  geom_node_point(color = "lightblue", size = 5) +
  geom_node_text(aes(label = name), vjust = 1, hjust = 1) +
  theme_void()

enter image description here

ggraph(bigrams, layout = "fr") +
  geom_edge_link(aes(edge_alpha = occur, edge_width = occur), edge_colour = "cyan4") +
  geom_node_point(size = 5) +
  geom_node_text(aes(label = name), repel = TRUE, 
                 point.padding = unit(0.2, "lines")) +
  theme_void()

enter image description here

Хорошо, это смешно, но удаление theme_void() решает все.Я предполагаю, что это делает что-то другое, когда книга написана.Однако легенда на втором графике по-прежнему не отображается, поэтому что-то не так:

enter image description here enter image description here

1 Ответ

0 голосов
/ 02 октября 2018

Я нашел пакет ggraph хорошим, но с некоторыми проблемами.Для меня ваш код работает, если вы увеличиваете сюжет в RStudio.
Однако я советую вам несколько небольших модов, которые делают сюжет без масштабирования:

ggraph(bigrams, layout = "fr") +
  geom_edge_link(aes(width = occur),          # seems the alpha creates problem with legend
                 colour = "cyan4") +
  geom_node_point(size = 5) +
  scale_edge_width(range = c(0.2, 2)) +       # rescale the edges
  geom_node_text(aes(label = name), repel = TRUE, point.padding = unit(0.2, "lines"))+
 theme_graph()                                # made for graph

enter image description here

Если вам нужна альфа, выМожно попробовать это, но я заметил, что вы видите легенду масштабирования в RStudio:

enter image description here


Данные те же, что и у вас, но сset.seed(1).

...