--- title: "ggpage features" author: "Emil Hvitfeldt" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{ggpage features} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ## Variable paragraph length The `ggpage` package allows for variable length of paragraphs if the text doesn't hold information regarding paragraphs. This is done by supplying the `variable.paragraph.length` argument in `ggpage_build` with a function that generate random natural numbers. Such as the `rpois` function. ```{r, message=FALSE} library(magrittr) library(dplyr) library(ggpage) book <- tinderbox %>% tidytext::unnest_tokens(text, text) ggpage_build(book, para.fun = rpois, lambda = 75) %>% ggpage_plot() ggpage_build(book, para.fun = rpois, lambda = 75) %>% ggpage_plot() ggpage_build(book, para.fun = rpois, lambda = 500) %>% ggpage_plot() ggpage_build(book, para.fun = rpois, lambda = 500) %>% ggpage_plot() ``` ## Show paper With the newest update `ggpage` allows you to draw a rectangle around each "page". ```{r} ggpage_build(tinderbox) %>% ggpage_plot(paper.show = TRUE) ``` It allows you use specify a color both as a constant, ```{r} ggpage_build(tinderbox) %>% ggpage_plot(paper.show = TRUE, paper.color = "pink") ``` or by a string of colors. In this case a faded rainbow. ```{r} ggpage_build(tinderbox) %>% ggpage_plot(paper.show = TRUE, paper.color = rainbow(9), paper.alpha = 0.3) ``` ## Show page number It can be hard to see the order of the pages in the standard vizualization. However it is possible to add a page number in the sides or corners of each page. ```{r} directions <- c("top", "top-right", "right", "bottom-right", "bottom", "bottom-left", "left", "top-left") ggpage_build(tinderbox) %>% ggpage_plot(page.number = directions[1]) ggpage_build(tinderbox) %>% ggpage_plot(page.number = directions[2]) ggpage_build(tinderbox) %>% ggpage_plot(page.number = directions[3]) ggpage_build(tinderbox) %>% ggpage_plot(page.number = directions[4]) ggpage_build(tinderbox) %>% ggpage_plot(page.number = directions[5]) ggpage_build(tinderbox) %>% ggpage_plot(page.number = directions[6]) ggpage_build(tinderbox) %>% ggpage_plot(page.number = directions[7]) ggpage_build(tinderbox) %>% ggpage_plot(page.number = directions[8]) ``` ## Variable page length The package also support a variable page length. This can be helpful when a collection of smaller texts are considered in the same vizualisation such as tweets. ```{r} tinderbox %>% mutate(short = ceiling(seq_len(nrow(tinderbox)) / 10)) %>% ggpage_build(page.col = "short", lpp = 10) %>% ggpage_plot() ``` ## Centering `ggpage` now supports left, right and both-sided alignments. ```{r} ggpage_build(tinderbox, align = "right") %>% ggpage_plot() ggpage_build(tinderbox, align = "both") %>% ggpage_plot() ``` ## Paragraph to line Lastly for convience does `ggpage` include a way to transform a data.frame with paragraph tokens to a data.frame with line tokens. ```{r} nest_paragraphs(data = tinderbox_paragraph, input = text) %>% head() nest_paragraphs(tinderbox_paragraph, text, width = 40) %>% head() ```