customLayout v0.3.0

0

Monthly downloads

0th

Percentile

Arrange Elements on the R's Drawing Area or Inside the PowerPoint's Slide

Create complicated drawing areas for multiple elements by combining much simpler layouts. It is an extended version of layout function from the 'graphics' package, but it also works with 'grid' graphics. It also supports arranging elements inside 'PowerPoint' slides created using the 'officer' package.

Readme

customLayout

GitHub
stars GitHub
watchers

CRAN\_Status\_Badge Downloads Travis-CI Build
Status AppVeyor Build
Status Coverage
Status Project Status: Active - The project has reached a stable, usable
state and is being actively
developed.

customLayout is a simple extension of the basic layout function from R but it works not only with base and grid graphics systems, but also with PowerPoint slides using officer package.

Instalation:

customLayout is available on CRAN:

install.packages("customLayout")

The development version can be installed from GitHub using devtools:

require(devtools)
install_github("zzawadz/customLayout")

Basic functionality:

You can create layouts in the using the same syntax as in the base layout function:

library(customLayout)
lay <- lay_new(
  matrix(1:4, nc = 2),
  widths = c(3, 2),
  heights = c(2, 1))
lay_show(lay)


lay2 <- lay_new(
  matrix(1:4, nc = 2),
  widths = c(3, 5),
  heights = c(2, 4))
lay_show(lay2)

But the main strength of this package is in combining created layouts with specific ratio:

# lay will be 3 times wider that lay2
# all ascects in lay and lay2 will be preserved
cl = lay_bind_col(lay, lay2, widths = c(3, 1))
lay_show(cl)

You can create even more complicated layouts:

lay3 <- lay_new(matrix(1:2))
lay4 <- lay_bind_row(cl, lay3, heights = c(5, 2))
lay_show(lay4)


lay5 <- lay_bind_col(lay4, lay3, widths = c(5, 2))
lay_show(lay5)

Split layout

You can create very complicated layouts by splitting one field:

library(customLayout)
lay <- lay_new(
  matrix(1:4, nc = 2),
  widths = c(3, 2),
  heights = c(2, 1))
lay_show(lay)

lay2 <- lay_new(
  matrix(1:4, nc = 2),
  widths = c(3, 5),
  heights = c(2, 4))
lay_show(lay2)


# Split field 4 from lay into lay2:
slay <- lay_split_field(lay, lay2, field = 4)
lay_show(slay)

Example session:

Base graphics

library(customLayout)
par(mar = c(3, 2, 2, 1))
lay  <- lay_new(
  matrix(1:4, nc = 2),
  widths = c(3, 2),
  heights = c(2, 1))
lay2 <- lay_new(matrix(1:3))
cl   <- lay_bind_col(lay, lay2, widths = c(3, 1))

lay_set(cl) # initialize drawing area

set.seed(123)
plot(1:100 + rnorm(100))
plot(rnorm(100), type = "l")
hist(rnorm(500))
acf(rnorm(100))
pie(c(3, 4, 6), col = 2:4)
pie(c(3, 2, 7), col = 2:4 + 3)
pie(c(5, 4, 2), col = 2:4 + 6)

Grid graphics (ggplot2 and friends)

library(customLayout)
library(ggplot2)
library(gridExtra)

lay  <- lay_new(
  matrix(1:2, ncol = 1))
lay2 <- lay_new(matrix(1:3))
cl   <- lay_bind_col(lay, lay2, widths = c(3, 1))


library(ggplot2)
cuts <- sort(unique(diamonds[["cut"]]),
            decreasing = TRUE)

make_cut_plot <- function(cut) {
  dd <- diamonds[diamonds[["cut"]] == cut, ]
  pl <- ggplot(dd) +
      geom_point(aes(carat, price)) +
      facet_wrap("cut")
  pl
}

plots <- lapply(cuts, make_cut_plot)

lay_grid(plots, cl)

PowerPoint support

Layouts created using customLayout package can be used to arrange elements on the PowerPoint slide. For the detailed description please refer to the vignette:

vignette("layouts-for-officer-power-point-document", package = "customLayout")

Functions in customLayout

Name Description
phl_with_plot add plot into layout placeholder
lay_bind_row Take two Layout objects and combine by rows.
lay_bind_col Take two Layout objects and combine by rows.
lay_set Set custom layout.
lay_show Print the layout structure to the graphical device.
print.CustomLayout Print a CustomLayout object.
phl_with_table add table into layout placeholder
print.OfficerCustomLayout Print a OfficerCustomLayout object.
phl_with_vg add a plot as vector graphics into layout placeholder
lay_grid Use Layout object with grid graphics.
lay_new Create custom layout.
lay_split_field Split a selected field from layout using a schema from another layout.
phl_calc_fontsize Calculate optimal fontsize and height of the cell for given height for flextable.
phl_adjust_table Create flextable for layout's placeholder.
phl_layout Create layout for the officer PowerPoint slide.
phl_with_text add text into layout placeholder
phl_with_flextable add flextable into layout placeholder
phl_with_gg add ggplot into layout placeholder
No Results!

Vignettes of customLayout

Name
cookbook/pp-editable.png
power-point/officer-flall.png
power-point/officer-flff.png
power-point/officer-flraw.png
power-point/officer-fltable.png
power-point/officer-gg.png
power-point/officer-plots.png
power-point/officer-table.png
power-point/officer-text.png
Roadmap.Rmd
customlayout-cookbook.Rmd
layouts-for-officer-power-point-document.Rmd
No Results!

Last month downloads

Details

Type Package
License GPL-3
RoxygenNote 6.1.0
URL https://www.customlayout.zstat.pl/, https://github.com/zzawadz/customLayout
BugReports https://github.com/zzawadz/customLayout/issues
VignetteBuilder knitr
NeedsCompilation no
Packaged 2018-10-30 13:42:32 UTC; zzawadz
Repository CRAN
Date/Publication 2018-10-31 07:20:03 UTC

Include our badge in your README

[![Rdoc](http://www.rdocumentation.org/badges/version/customLayout)](http://www.rdocumentation.org/packages/customLayout)