waffle (version 0.7.0)

waffle: Make waffle (square pie) charts

Description

Given a named vector, this function will return a ggplot object that represents a waffle chart of the values. The individual values will be summed up and each that will be the total number of squares in the grid. You can perform appropriate value transformation ahead of time to get the desired waffle layout/effect.

Usage

waffle(parts, rows = 10, keep = TRUE, xlab = NULL, title = NULL,
  colors = NA, size = 2, flip = FALSE, reverse = FALSE, equal = TRUE,
  pad = 0, use_glyph = FALSE, glyph_size = 12, legend_pos = "right")

Arguments

parts

named vector of values to use for the chart

rows

number of rows of blocks

keep

keep factor levels (i.e. for consistent legends across waffle plots)

xlab

text for below the chart. Highly suggested this be used to give the "1 sq == xyz" relationship if it's not obvious

title

chart title

colors

exactly the number of colors as values in parts. If omitted, Color Brewer "Set2" colors are used.

size

width of the separator between blocks (defaults to 2)

flip

flips x & y axes

reverse

reverses the order of the data

equal

by default, waffle uses coord_equal; this can cause layout problems, so you an use this to disable it if you are using ggsave or knitr to control output sizes (or manually sizing the chart)

pad

how many blocks to right-pad the grid with

use_glyph

use specified FontAwesome glyph

glyph_size

size of the FontAwesome font

legend_pos

position of legend

Details

If the vector is not named or only partially named, capital letters will be used instead. It is highly suggested that you limit the number of elements to plot, just like you should if you ever got wasted and decided that a regular pie chart was a good thing to create and then decide to be totally evil and make one to pollute this beautiful world of ours.

Chart title and x-axis labels are optional, especially if you'll just be exporting to another program for use/display.

If you specify a string (vs FALSE) to use_glyph the function will map the input to a FontAwesome glyph name and use that glyph for the tile instead of a block (making it more like an isotype pictogram than a waffle chart). You'll need to actually install FontAwesome and use the extrafont package (https://github.com/wch/extrafont) to be able to use the FontAwesome glyphs. Sizing is also up to the user since fonts do not automatically scale with graphic resize.

Glyph idea inspired by Ruben C. Arslan (@_r_c_a)

Examples

Run this code
parts <- c(80, 30, 20, 10)
chart <- waffle(parts, rows=8)
# print(chart)

# library(extrafont)
# waffle(parts, rows=8, use_glyph="shield")

parts <- c(One=80, Two=30, Three=20, Four=10)
chart <- waffle(parts, rows=8)
# print(chart)

Run the code above in your browser using DataLab