GitHub - EmilHvitfeldt/ggpage: Creates Page Layout Visualizations in R πππ (original) (raw)
ggpage
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.
Installation
You can install the released version of ggpage fromCRAN with:
install.packages("ggpage")
or you can install the developmental version of ggpage from github with:
install.packages("devtools")
devtools::install_github("EmilHvitfeldt/ggpage")
Example
The package includes The Tinder-box by H.C. Andersen for examples.
library(tidyverse) #> Warning: replacing previous import 'dplyr::vars' by 'rlang::vars' when #> loading 'dbplyr' library(ggpage)
head(tinderbox, 10)
#> # A tibble: 10 x 2
#> text book
#>
#> 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
andggpage_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β.
ggpage_quick(tinderbox) #> 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() %>% ggpage_plot()
But this approach allows us to introduce more code betweenggpage_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")