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
ttf
version from here - install it on your system
- install the extrafont package
- run
font_import()
(get some coffee/scotch while you wait) - load
extrafont
when 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:
## [1] "car" "caret-down" "caret-left" ## [4] "caret-right" "caret-square-o-down" "caret-square-o-left" ## [7] "caret-square-o-right" "caret-square-o-up" "caret-up" ## [10] "cart-arrow-down" "cart-plus" "cc-mastercard" ## [13] "credit-card" "shopping-cart"
Any 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-breached\nUS 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.
5 Comments
haha good thing I was mostly procrastinating with this, or I would feel quite superfluous now.
Cool that you added the icon names, I also didn’t like the unicode/glyph copying thing, but didn’t consider this.
I share your font woes, I tried putting icons on a map in a shiny app once, did not go well… Probable way forward is to go via htmlwidget route, since font support in shiny and other clients will be much better via the browser than via R.
I’m not a fan of the waffle type visualizations, but this could easily be hacked into icon arrays which is great!
Great!
I also ran: windowsFonts(FontAwesome=windowsFont(“FontAwesome”)) when using glyph with waffle package.
Thanks for that line of code. Working across both windows and mac, your comment saved me untold amounts of time searching for an answer
Great work! Any update as to when the new version will hit CRAN? thanks!
One Trackback/Pingback
[…] Pre-CRAN waffle update – isotype pictograms 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 useglyph- which is either FALSE or a character string for a FontAwesome icon (more on that in a bit) — and glyphsize — which is a numeric value for the font size since it won’t scale when the graphic resizes. […]