Drawing textured rectangles and bars with ggplot
Written by Claus O. Wilke
This package provides functions to draw textured rectangles and bars with the grid graphics system and with ggplot2.
Note: The package is at the stage of tech demo/proof of concept. It is not ready for production purposes.
Please install from github via:
devtools::install_github("clauswilke/ggtextures")
Basic example of a textured rectangle drawn with grid:
library(ggtextures) library(grid) library(magick) #> Linking to ImageMagick 6.9.9.39 #> Enabled features: cairo, fontconfig, freetype, lcms, pango, rsvg, webp #> Disabled features: fftw, ghostscript, x11img
This is a basic example of textured rectangles in ggplot2:
library(ggplot2) library(tibble)data
Note that we are reading in the svg file explicitly, using the function
image_read_svg()from the magick package. This is needed for proper handling of transparencies in svg files.We can also make a textured equivalent to
geom_col()orgeom_bar():df
images = c( compact = "http://www.hypergridbusiness.com/wp-content/uploads/2012/12/rocks2-256.jpg", midsize = "http://www.hypergridbusiness.com/wp-content/uploads/2012/12/stone2-256.jpg", suv = "http://www.hypergridbusiness.com/wp-content/uploads/2012/12/siding1-256.jpg", `2seater` = "http://www.hypergridbusiness.com/wp-content/uploads/2012/12/mulch1-256.jpg", minivan = "http://www.hypergridbusiness.com/wp-content/uploads/2012/12/rocks1-256.jpg", pickup = "http://www.hypergridbusiness.com/wp-content/uploads/2012/12/wood3-256.jpg", subcompact = "http://www.hypergridbusiness.com/wp-content/uploads/2012/12/concrete1-256.jpg" )ggplot(mpg, aes(class, image = class)) + geom_textured_bar() + scale_image_manual(values = images)
ggplot(mpg, aes(factor(trans), image = class)) + geom_textured_bar() + scale_image_manual(values = images)
Isotype bars can be drawn with
geom_isotype_bar()andgeom_isotype_col(). The units of the images are set as grid native units. Default is that the image height corresponds to one data unit.data
ggplot(data, aes(animal, count, image = image)) + geom_isotype_col( img_width = grid::unit(1, "native"), img_height = NULL, ncol = NA, nrow = 1, hjust = 0, vjust = 0.5, fill = "#80808040" ) + coord_flip() + theme_minimal()