GitHub - lepennec/ggwordcloud: A word cloud geom for ggplot2 (original) (raw)

ggwordcloud

CRAN status

ggwordcloud provides a word cloud text geom for ggplot2. The placement algorithm implemented in C++ is an hybrid between the one ofwordcloud and the one of wordcloud2.js. The cloud can grow according to a shape and stay within a mask. The size aesthetic is used either to control the font size or the printed area of the words. ggwordcloudalso supports arbitrary text rotation. The faceting scheme of ggplot2can also be used. Two functions meant to be the equivalent ofwordcloud and wordcloud2 are proposed. Last but not least you can use gridtext markdown/html syntax in the labels.

Installation

You can install the released version of ggwordcloud fromCRAN with:

install.packages("ggwordcloud")

or the development version from the github repository

devtools::install_github("lepennec/ggwordcloud")

Please check the latest development version before submitting an issue.

Some word clouds

Because sometimes, pictures are better than a thousand words…

library(ggwordcloud) #> Loading required package: ggplot2 data("love_words_small") set.seed(42) ggplot(love_words_small, aes(label = word, size = speakers)) + geom_text_wordcloud() + scale_size_area(max_size = 40) + theme_minimal()

data("love_words") set.seed(42) ggplot( love_words, aes( label = word, size = speakers, color = speakers ) ) + geom_text_wordcloud_area(aes(angle = 45 * sample(-2:2, nrow(love_words), replace = TRUE, prob = c(1, 1, 4, 1, 1) )), mask = png::readPNG(system.file("extdata/hearth.png", package = "ggwordcloud", mustWork = TRUE )), rm_outside = TRUE ) + scale_size_area(max_size = 40) + theme_minimal() + scale_color_gradient(low = "darkred", high = "red") #> Some words could not fit on page. They have been removed.

library(dplyr, quietly = TRUE, warn.conflicts = FALSE) library(tidyr, quietly = TRUE) set.seed(42) ggplot( love_words_small %>% gather(key = "type", value = "speakers", -lang, -word) %>% arrange(desc(speakers)), aes(label = word, size = speakers) ) + geom_text_wordcloud_area() + scale_size_area(max_size = 40) + theme_minimal() + facet_wrap(~type)

set.seed(42) ggplot(love_words_small, aes(label = word, size = speakers, label_content = sprintf("%s(%g)", word, speakers))) + geom_text_wordcloud_area() + scale_size_area(max_size = 40) + theme_minimal()

More examples are available in the vignette.