Need help with ggwordcloud?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

lepennec
142 Stars 5 Forks Other 146 Commits 1 Opened issues

Description

A word cloud geom for ggplot2

Services available

!
?

Need anything else?

Contributors list

# 285,556
R
ggplot-...
Shell
SQL
137 commits
# 121,520
R
TeX
ads-b
uber
5 commits

ggwordcloud

Travis build
status Coverage
status CRAN
status

ggwordcloud
provides a word cloud text geom for
ggplot2
. The placement algorithm implemented in C++ is an hybrid between the one of
wordcloud
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.
ggwordcloud
also supports arbitrary text rotation. The faceting scheme of
ggplot2
can also be used. Two functions meant to be the equivalent of
wordcloud
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 from CRAN 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.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.