Преобразовать облако слов в гроб/включить его в grid.arrange (R)

Я создал более сложный вывод с помощью grid.arrange и теперь хочу включить облако слов (2). Функция ggplot wordcloud не вариант, так как для моей задачи работает намного медленнее. Но grid.arrange не позволяет wordcloud2. Однако как я могу теперь сохранить свой вывод wordcloud2 как grob, чтобы включить его в grid.arrange? Вопрос аналогичен (Как поместить облако слов в гроб?), но с wordcloud2.

Какие-либо предложения?


person Alex_    schedule 28.06.2021    source источник


Ответы (1)


Если вы склонны рассматривать другой вариант, пакет patchwork может предоставить решение вашей проблемы. В качестве второго варианта я бы предложил взглянуть на cowplot::as_grob.

library(wordcloud)
#> Loading required package: RColorBrewer
library(ggplot2)
library(patchwork)

words <- c('affectionate', 'ambitious', 'anxious', 'articulate', 'artistic', 'caring', 'contented', 'creative', 'cynical', 'daring', 'dependable', 'easygoing', 'energetic', 'funny', 'generous', 'genuine', 'goodlistener', 'goodtalker', 'happy', 'hardworking', 'humerous', 'impulsive', 'intelligent', 'kind', 'loyal', 'modest', 'optimistic', 'outgoing', 'outrageous', 'passionate', 'perceptive', 'physicallyfit', 'quiet', 'rational', 'respectful', 'romantic', 'shy', 'spiritual', 'spontaneous', 'sweet', 'thoughtful', 'warm')
freqs <- c(134, 53, 0, 5, 0, 247, 0, 78, 0, 0, 134, 178, 79, 344, 63, 65, 257, 0, 109, 113, 0, 0, 107, 51, 199, 24, 67, 232, 0, 109, 24, 28, 29, 2, 105, 70, 0, 35, 64, 156, 66, 45)

p1 <- qplot(1:10, rnorm(10), colour = runif(10))

p1 + ~wordcloud(words, freqs)

person stefan    schedule 28.06.2021
comment
Спасибо! Patchwork, к сожалению, не вариант, так как уже существует более крупная структура, основанная на gridArrange. Подсказка с cowplot::as_grob направила меня в правильном направлении. За исключением того, что я, к сожалению, не могу кэшировать grob для использования в grid.arrange: Wordcl <- ~wordcloud(words, freqs) grid.newpage() GridWordcloud <- grid.draw(as_grob(Wordcl)) grid.arrange(GridWordcloud) - person Alex_; 28.06.2021
comment
А, я заметил, что это работает с GridWordcloud <- as_grob(Wordcl)! Но, к сожалению, это не работает с wordcloud2, есть идеи? Спасибо, кстати, за спасение вечера! - person Alex_; 29.06.2021
comment
К сожалению нет. :( Не знаком ни с wordcloud, ни с wordcloud2. Но, насколько я понимаю, wordcloud2 невозможен, поскольку возвращает объект htmlwidget. Я также проверил as_grob. Но результаты были не очень убедительными, и я столкнулся с той же проблемой, о которой вы упомянули. Лучший С. - person stefan; 29.06.2021