Skip to content
Creates Page Layout Visualizations in R πŸ“„πŸ“„πŸ“„
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
R update readme Jun 13, 2019
data-raw nest paragraphs and misc Apr 6, 2018
data nest paragraphs and misc Apr 6, 2018
docs update description Dec 30, 2018
man cran release Jun 13, 2019
pkgdown/favicon add pkgdown Dec 30, 2018
tests adding paper options Apr 5, 2018
vignettes fixing "invalid argument to unary operator" Apr 7, 2018
.Rbuildignore cran release Jun 13, 2019
.gitignore adding support for variable paragraph length Apr 4, 2018
.travis.yml adding codecov Apr 6, 2018
DESCRIPTION Increment version number Jun 13, 2019
LICENSE adding LICENSE Nov 9, 2017
NAMESPACE Increment version number Jun 13, 2019
README.Rmd cran release Jun 13, 2019 cran release Jun 13, 2019
_pkgdown.yml add pkgdown Dec 30, 2018
appveyor.yml adding appveyor Jul 21, 2018
codecov.yml adding codecov Apr 6, 2018 cran release Jun 13, 2019
ggpage.Rproj Adding package to github Aug 27, 2017


Travis build status AppVeyor build status Coverage status CRAN status

ggpage is a package to create pagestyled visualizations of text based data. It uses ggplot2 and final returns are ggplot2 objects.

Version 0.2.0

In this new version I have worked to include a lot of use cases that wasn’t available in the first version. These new elements are previewed in the vignette.


You can install the released version of ggpage from CRAN with:


or you can install the developmental version of ggpage from github with:

# install.packages("devtools")


The package includes The Tinder-box by H.C. Andersen for examples.

#> Warning: replacing previous import 'dplyr::vars' by 'rlang::vars' when
#> loading 'dbplyr'

head(tinderbox, 10)
#> # A tibble: 10 x 2
#>    text                                                        book        
#>    <chr>                                                       <chr>       
#>  1 "A soldier came marching along the high road: \"Left, righ… The tinder-…
#>  2 had his knapsack on his back, and a sword at his side; he … The tinder-…
#>  3 and was now returning home. As he walked on, he met a very… The tinder-…
#>  4 witch in the road. Her under-lip hung quite down on her br… The tinder-…
#>  5 "and said, \"Good evening, soldier; you have a very fine s… The tinder-…
#>  6 knapsack, and you are a real soldier; so you shall have as… The tinder-…
#>  7 "you like.\""                                               The tinder-…
#>  8 "\"Thank you, old witch,\" said the soldier."               The tinder-…
#>  9 "\"Do you see that large tree,\" said the witch, pointing … The tinder-…
#> 10 "beside them. \"Well, it is quite hollow inside, and you m… The tinder-…

The basic workflow with ggpage is using either

  • ggpage_quick for a quick one function call plot or,
  • combining ggpage_build and ggpage_plot to do analysis (NLP for example) before the final plot is produced.

For a simple demonstration we apply ggpage_quick to our tinderbox object. It is important that the data.frame that is used have the text in a column named β€œtext”.

#> Warning: replacing previous import 'dplyr::vars' by 'rlang::vars' when
#> loading 'tidytext'

# Also pipeable
# tinderbox %>% ggpage_quick()

The same result would be achieved by using

tinderbox %>% 
  ggpage_build() %>% 

But this approach allows us to introduce more code between ggpage_build and ggpage_plot giving us multiple more ways to enhance the plots

tinderbox %>%
  ggpage_build() %>%
  mutate(long_word = stringr::str_length(word) > 8) %>%
  ggpage_plot(aes(fill = long_word)) +
  labs(title = "Longer words throughout The Tinder-box") +
  scale_fill_manual(values = c("grey70", "blue"),
                    labels = c("8 or less", "9 or more"),
                    name = "Word length")

You can’t perform that action at this time.