About this Notebook
In this Notebook we will learn how to draw a waffle charts in R. This Notebook is adapted (a clone) from the exercises of the course Data Visualisation with R, from cognitiveclass.ai. All you will find here is just a “replication” of the original material, which I recommend you research. It is just a learning and knowledge sharing exercise. There are no commercial interests.
Also, Cognitive Class courses are excellent for those who are interested in finding out more about Data Science, the R language and much more.
This is an R Markdown Notebook.
==============================================================================================================
Waffle Charts
1. The Data
For this exercise (following the example of the course) we will create the data to plot. It will be given of the expenses in an imaginary house (family) for the period of one year.
We will create a vector of names, called “expenses” with the following code:
expenses <- c(`Health ($43,212)`=43212, `Education ($113,412)`=113412, `Transportation ($20,231)`=20231, `Entertainment ($28,145)`=28145)
We can check in the output our vector with the values we will plot:
expenses
Health ($43,212) Education ($113,412) Transportation ($20,231)
43212 113412 20231
Entertainment ($28,145)
28145
2. Libraries needed
We will need three special libraries from R: “ggplot2” and “waffle”.
You can install and load those libraries following the code below.
# install.packages("ggplot2") # for special's R visualization tools
# install.packages("waffle") # for waffle charts
library(ggplot2)
library(waffle)
3. The Waffle Method
Please note the parameters listed in the code snippet below.
Step one: we pass our vector expenses to the function waffle().
Step two: we define a constant, to adjust the proportion of the data to the total number of squares in our chart.
Step three: we establish the number of lines that will be used and the size of the squares.
Step four: we define the colours we want to use and the labels that form most appropriate.
waffle(expenses/1500, rows=7, size=0.5,
colors=c("#c7d4b6", "#a3aabd", "#a0d0de", "#97b5cf"),
title="Imaginary Household Expenses Each Year",
xlab="1 square = $934") #play with those parameters

R lang is more than a programming language. It’s a whole statistical programming and data analysis environment, with an amazing community that grows every day. See also RStudio, the best integrated development environment for the R language (in my opinion).
There it is! I hope you enjoyed it. See you next time.
About the author
Eliezer Araújo is a quantitative researcher in the field of health psychology and health policy analysis. And he loves the language R.
LS0tCnRpdGxlOiAiV2FmZmxlIENoYXJ0cyBpbiBSIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgoqKkFib3V0IHRoaXMgTm90ZWJvb2sqKgoKSW4gdGhpcyBOb3RlYm9vayB3ZSB3aWxsIGxlYXJuIGhvdyB0byBkcmF3IGEgKip3YWZmbGUgY2hhcnRzKiogaW4gKipSKiouIFRoaXMgTm90ZWJvb2sgaXMgYWRhcHRlZCAoYSBjbG9uZSkgZnJvbSB0aGUgZXhlcmNpc2VzIG9mIHRoZSBjb3Vyc2UgKipEYXRhIFZpc3VhbGlzYXRpb24gd2l0aCBSKiosIGZyb20gW2NvZ25pdGl2ZWNsYXNzLmFpXShodHRwczovL2NvZ25pdGl2ZWNsYXNzLmFpLykuIEFsbCB5b3Ugd2lsbCBmaW5kIGhlcmUgaXMganVzdCBhICJyZXBsaWNhdGlvbiIgb2YgdGhlIG9yaWdpbmFsIG1hdGVyaWFsLCB3aGljaCBJIHJlY29tbWVuZCB5b3UgcmVzZWFyY2guICBJdCBpcyBqdXN0IGEgbGVhcm5pbmcgYW5kIGtub3dsZWRnZSBzaGFyaW5nIGV4ZXJjaXNlLiBUaGVyZSBhcmUgbm8gY29tbWVyY2lhbCBpbnRlcmVzdHMuIAoKQWxzbywgQ29nbml0aXZlIENsYXNzIGNvdXJzZXMgYXJlIGV4Y2VsbGVudCBmb3IgdGhvc2Ugd2hvIGFyZSBpbnRlcmVzdGVkIGluIGZpbmRpbmcgb3V0IG1vcmUgYWJvdXQgRGF0YSBTY2llbmNlLCB0aGUgUiBsYW5ndWFnZSBhbmQgbXVjaCBtb3JlLgoKVGhpcyBpcyBhbiBbUiBNYXJrZG93bl0oaHR0cDovL3JtYXJrZG93bi5yc3R1ZGlvLmNvbSkgTm90ZWJvb2suCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKIyBXYWZmbGUgQ2hhcnRzICMKCgoqKjEuIFRoZSBEYXRhKioKCkZvciB0aGlzIGV4ZXJjaXNlIChmb2xsb3dpbmcgdGhlIGV4YW1wbGUgb2YgdGhlIGNvdXJzZSkgd2Ugd2lsbCBjcmVhdGUgdGhlIGRhdGEgdG8gcGxvdC4gSXQgd2lsbCBiZSBnaXZlbiBvZiB0aGUgZXhwZW5zZXMgaW4gYW4gaW1hZ2luYXJ5IGhvdXNlIChmYW1pbHkpIGZvciB0aGUgcGVyaW9kIG9mIG9uZSB5ZWFyLgoKV2Ugd2lsbCBjcmVhdGUgYSB2ZWN0b3Igb2YgbmFtZXMsIGNhbGxlZCAqKiJleHBlbnNlcyIqKiB3aXRoIHRoZSBmb2xsb3dpbmcgY29kZToKCmBgYHtyfQpleHBlbnNlcyA8LSBjKGBIZWFsdGggKCQ0MywyMTIpYD00MzIxMiwgYEVkdWNhdGlvbiAoJDExMyw0MTIpYD0xMTM0MTIsIGBUcmFuc3BvcnRhdGlvbiAoJDIwLDIzMSlgPTIwMjMxLCBgRW50ZXJ0YWlubWVudCAoJDI4LDE0NSlgPTI4MTQ1KQpgYGAKCldlIGNhbiBjaGVjayBpbiB0aGUgb3V0cHV0IG91ciB2ZWN0b3Igd2l0aCB0aGUgdmFsdWVzIHdlIHdpbGwgcGxvdDoKCmBgYHtyfQpleHBlbnNlcwpgYGAKCgoqKjIuIExpYnJhcmllcyBuZWVkZWQqKgoKV2Ugd2lsbCBuZWVkIHRocmVlIHNwZWNpYWwgbGlicmFyaWVzIGZyb20gUjogKioiZ2dwbG90MiIqKiBhbmQgKioid2FmZmxlIioqLgoKWW91IGNhbiBpbnN0YWxsIGFuZCBsb2FkIHRob3NlIGxpYnJhcmllcyBmb2xsb3dpbmcgdGhlIGNvZGUgYmVsb3cuCiAKYGBge3J9CiMgaW5zdGFsbC5wYWNrYWdlcygiZ2dwbG90MiIpICMgZm9yIHNwZWNpYWwncyBSIHZpc3VhbGl6YXRpb24gdG9vbHMKIyBpbnN0YWxsLnBhY2thZ2VzKCJ3YWZmbGUiKSAjIGZvciB3YWZmbGUgY2hhcnRzCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeSh3YWZmbGUpCmBgYAoKCgoqKjMuIFRoZSBXYWZmbGUgTWV0aG9kKioKClBsZWFzZSBub3RlIHRoZSBwYXJhbWV0ZXJzIGxpc3RlZCBpbiB0aGUgY29kZSBzbmlwcGV0IGJlbG93LiAKCipTdGVwIG9uZSo6IHdlIHBhc3Mgb3VyIHZlY3RvciAqKmV4cGVuc2VzKiogdG8gdGhlIGZ1bmN0aW9uIGBgYHdhZmZsZSgpYGBgLgoKKlN0ZXAgdHdvKjogd2UgZGVmaW5lIGEgY29uc3RhbnQsIHRvIGFkanVzdCB0aGUgcHJvcG9ydGlvbiBvZiB0aGUgZGF0YSB0byB0aGUgdG90YWwgbnVtYmVyIG9mIHNxdWFyZXMgaW4gb3VyIGNoYXJ0LgoKKlN0ZXAgdGhyZWUqOiB3ZSBlc3RhYmxpc2ggdGhlIG51bWJlciBvZiBsaW5lcyB0aGF0IHdpbGwgYmUgdXNlZCBhbmQgdGhlIHNpemUgb2YgdGhlIHNxdWFyZXMuCgoqU3RlcCBmb3VyKjogd2UgZGVmaW5lIHRoZSBjb2xvdXJzIHdlIHdhbnQgdG8gdXNlIGFuZCB0aGUgbGFiZWxzIHRoYXQgZm9ybSBtb3N0IGFwcHJvcHJpYXRlLgoKYGBge3J9CndhZmZsZShleHBlbnNlcy8xNTAwLCByb3dzPTcsIHNpemU9MC41LCAKICAgICAgIGNvbG9ycz1jKCIjYzdkNGI2IiwgIiNhM2FhYmQiLCAiI2EwZDBkZSIsICIjOTdiNWNmIiksIAogICAgICAgdGl0bGU9IkltYWdpbmFyeSBIb3VzZWhvbGQgRXhwZW5zZXMgRWFjaCBZZWFyIiwgCiAgICAgICB4bGFiPSIxIHNxdWFyZSA9ICQ5MzQiKSAjcGxheSB3aXRoIHRob3NlIHBhcmFtZXRlcnMKYGBgCgoKCgpbUiBsYW5nXShodHRwczovL2NyYW4uci1wcm9qZWN0Lm9yZy8pIGlzIG1vcmUgdGhhbiBhIHByb2dyYW1taW5nIGxhbmd1YWdlLiBJdCdzIGEgd2hvbGUgc3RhdGlzdGljYWwgcHJvZ3JhbW1pbmcgYW5kIGRhdGEgYW5hbHlzaXMgZW52aXJvbm1lbnQsIHdpdGggYW4gYW1hemluZyBjb21tdW5pdHkgdGhhdCBncm93cyBldmVyeSBkYXkuIFNlZSBhbHNvIFtSU3R1ZGlvXShodHRwczovL3JzdHVkaW8uY29tLyksIHRoZSBiZXN0IGludGVncmF0ZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgZm9yIHRoZSBSIGxhbmd1YWdlIChpbiBteSBvcGluaW9uKS4gCgpUaGVyZSBpdCBpcyEgSSBob3BlIHlvdSBlbmpveWVkIGl0LiBTZWUgeW91IG5leHQgdGltZS4KCioqQWJvdXQgdGhlIGF1dGhvcioqCgpbRWxpZXplciBBcmHDumpvXShodHRwczovL2dpdGh1Yi5jb20vbXhlbGllemVyKSBpcyBhIHF1YW50aXRhdGl2ZSByZXNlYXJjaGVyIGluIHRoZSBmaWVsZCBvZiBoZWFsdGggcHN5Y2hvbG9neSBhbmQgaGVhbHRoIHBvbGljeSBhbmFseXNpcy4gQW5kIGhlIGxvdmVzIHRoZSBsYW5ndWFnZSBSLgo=