It seems Ruben C. Arslan had the waffle idea about the same time I did. Apart from some extra spiffy XKCD-like styling, one other thing his waffling routines allowed for was using FontAwesome icons. When you use an icon vs a block, you are really making a basic version of isotype pictograms. They can add a dimension to the story you’re trying to tell without using any words. I’ve added two parameters to a pre-release CRAN version that I’d like folks to kick the tyres on a bit. Said parameters are
use_glyph– which is either
FALSE or a character string for a FontAwesome icon (more on that in a bit) — and
glyph_size — which is a numeric value for the font size since it won’t scale when the graphic resizes.
Fonts in R & waffle
One part of R that is (with apologies to Winston and others) weak is fonts. You can use fonts, but doing so is often not pretty (despite guidance on the subject) and not without problems (we tried using a custom font again for this year’s DBIR graphics and failed miserably — again — due to font issues and R and had to have the graphics folks substitute them in).
To use the FontAwesome glyphs you need to:
- grab the
ttfversion from here
- install it on your system
- install the extrafont package
font_import()(get some coffee/scotch while you wait)
extrafontwhen you need to use these glyphs
Once you do that, you’re probably ready to make isotype pictograms with
waffle. I say probably since this process worked on two of my OS X systems but not a third. Same R version. Same RStudio version. Same import process. (This is part of the reason for my lament of the state of fonts since I’m not exactly an n00b with either R, Macs or fonts.)
Making isotype pictograms
I did borrow some code from Ruben, but I hate typing unicode characters and I suspect most folks do as well. If you do any work in straight HTML/CSS, you know you can just refer to the various FontAwesome glyphs by name. To use FontAwesome glyphs with
waffle you specify the font name (no
fa- prefix) vs unicode character. If you want to see what’s available (and don’t want to bookmark the FontAwesome site) you can run either
fa_list() which will give you a list of available FontAwesome glyph names or use
fa_grep() and supply a pattern name. For example, running
fa_grep("car") gives you:
##  "car" "caret-down" "caret-left" ##  "caret-right" "caret-square-o-down" "caret-square-o-left" ##  "caret-square-o-right" "caret-square-o-up" "caret-up" ##  "cart-arrow-down" "cart-plus" "cc-mastercard" ##  "credit-card" "shopping-cart"
grep regex will work in that function.
You’ll need to
devtools::install_github("hrbrmstr/waffle", ref="cran") to use the dev/pre-CRAN version of
waffle before doing anything.
To make an isotype pictogram version of the health records breaches waffle chart, you can do the following:
library(waffle) library(extrafont) parts <- c(`Un-breachednUS Population`=(318-11-79), `Premera`=11, `Anthem`=79) waffle(parts/10, rows=3, colors=c("#969696", "#1879bf", "#009bda"), use_glyph="medkit", size=8)
So, please kick the tyres, post comments about your font successes & woes and definitely link to any isotype pictograms you create.