Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.5%) to scientific vocabulary
Keywords
Repository
A Stata package for Waffle charts
Basic Info
Statistics
- Stars: 8
- Watchers: 1
- Forks: 0
- Open Issues: 3
- Releases: 6
Topics
Metadata Files
README.md
Installation | Syntax | Citation guidelines | Examples | Feedback | Change log
waffle v1.23
(18 Oct 2024)
This package provides the ability to draw waffles Stata. It is based on the Waffle plots guide on Medium.
The package is still beta and is being constantly improved. It might still be missing checks and features.
Installation
The package can be installed via SSC or GitHub. The GitHub version, might be more recent due to bug fixes, feature updates etc, and may contain syntax improvements and changes in default values. See version numbers below. Eventually the GitHub version is published on SSC.
The SSC version (v1.23):
ssc install waffle, replace
Or it can be installed from GitHub (v1.23):
net install waffle, from("https://raw.githubusercontent.com/asjadnaqvi/stata-waffle/main/installation/") replace
The palettes package is required to run this command:
ssc install palettes, replace
ssc install colrspace, replace
ssc install graphfunctions, replace
Even if you have the package installed, make sure that it is updated ado update, update.
If you want to make a clean figure, then it is advisable to load a clean scheme. These are several available and I personally use the following:
ssc install schemepack, replace
set scheme white_tableau
You can also push the scheme directly into the graph using the scheme(schemename) option. See the help file for details or the example below.
I also prefer narrow fonts in figures with long labels. You can change this as follows:
graph set window fontface "Arial Narrow"
Syntax
The syntax for the latest version is as follows:
stata
waffle numvar(s) [if] [in],
[ by(variable) over(variable) normvar(variable) percent showpct format(fmt) palette(name)
rowdots(num) coldots(num) aspect(num) msymbol(list) msize(list) mlwidth(list)
ndsymbol(str) ndsize(str) ndcolor(str) cols(num) margin(str) novalues wrap(num)
legcolumns(num) legposition(pos) legsize(str) note(str) subtitle(str) * ]
See the help file help waffle for details.
The basic use for wide form is:
waffle variables
and for long form is:
waffle variable, by()
where variable(s) are a set of numeric variables.
Citation guidelines
Software packages take countless hours of programming, testing, and bug fixing. If you use this package, then a citation would be highly appreciated. Suggested citations:
in BibTeX
@software{waffle,
author = {Naqvi, Asjad AND Colston, Jared},
title = {Stata package ``waffle''},
url = {https://github.com/asjadnaqvi/stata-waffle},
version = {1.23},
date = {2024-10-18}
}
or simple text
Naqvi, A. & Colston, J. (2024). Stata package "waffle" version 1.23. Release date 18 October 2024. https://github.com/asjadnaqvi/stata-waffle.
or see SSC citation (updated once a new version is submitted)
Examples
Set up the data in wide form:
```stata clear sysuse pop2000, clear
// generate a categorical variable
gen agecat = . replace agecat = 1 if agegrp <= 3 replace agecat = 2 if inrange(agegrp, 4, 13) replace agecat = 3 if agegrp >=14
tab agegrp agecat lab de agecat 1 "<15" 2 "15-64" 3 "> 65+" lab val agecat agecat ```
Let's test the basic command:
waffle white black asian indian

Add additional catgories:
waffle white black asian indian, over(agecat) note("")

waffle white black asian indian, over(agecat) note("") showpct

Above the higher category determines the relatively heights. But we can also adjust it by a normalizaing variable normvar() which in this case is the total population variable:
waffle white black asian indian, over(agecat) normvar(total) note("")

We can also normalize each block local percentages of each category:
waffle white black asian indian, over(agecat) percent note("")

waffle white black asian indian, over(agecat) percent note("") showpct

waffle white black asian indian, over(agecat) percent note("") noval

And change the color palettes:
waffle white black asian indian, over(agecat) normvar(total) palette(okabe) note("")

waffle white black asian indian, over(agecat) normvar(total) palette(okabe) ///
note("Graphs by race") xsize(2) ysize(1)

Marker symbols
We can also fully customize the marker symbols and marker sizes:
waffle white black asian indian, over(agecat) normvar(total) ///
palette(okabe) msym(triangle circle square) msize(1.5 1.6) ///
note("") xsize(2) ysize(1)

This also works well if there is a single color, e.g. for black and white graphs:
waffle white black asian indian, over(agecat) normvar(total) ///
palette(black) msym(Oh triangle +) msize(1.8 1.5 2.4) ///
note("") xsize(3) ysize(1)

waffle white black asian indian, over(agecat) normvar(total) ///
palette(black) msym(Oh triangle +) msize(1.8 1.5 2.4) ///
note("") xsize(3) ysize(1)

waffle white black asian indian, over(agecat) normvar(total) ///
palette(black) msym(Oh triangle +) msize(1.8 1.5 2.4) mlwid(0.5 0.2 0.5) ///
note("") xsize(3) ysize(1) ///
legsize(3) subtitle(, size(4) pos(6) nobox) ndsym(circle) ndcolor(red) ndsize(0.1)

Customize dots rows and columns
waffle white black asian indian, over(agecat) normvar(total) palette(okabe) rowdots(10) note("")

waffle white black asian indian, over(agecat) normvar(total) palette(okabe) rowdots(10) msize(2.2) note("")

waffle white black asian indian, over(agecat) normvar(total) palette(okabe) rowdots(5) msize(3) note("")

Placements
waffle white black asian indian, over(agecat) normvar(total) palette(okabe) rowdots(5) msize(3) ///
note("") margin(large)

waffle white black asian indian, over(agecat) normvar(total) palette(okabe) rowdots(10) msize(1.1) ///
note("") cols(2) xsize(1) ysize(1)

waffle white black asian indian, over(agecat) normvar(total) palette(okabe) rowdots(10) msize(1.1) ///
note("") cols(2) xsize(1) ysize(1)

Long form
Convert the data to long form:
```stata sysuse pop2000, clear
keep white black asian indian island agegrp total gen id = _n
ren white ywhite ren black yblack ren asian yasian ren indian yindian ren island y_island
reshape long y_ , i(id agegrp total) j(byvar) string
sort byvar agegrp
gen agecat = . replace agecat = 1 if agegrp <= 3 replace agecat = 2 if inrange(agegrp, 4, 13) replace agecat = 3 if agegrp >=14
tab agegrp agecat lab de agecat 1 "<15" 2 "15-64" 3 "> 65+" lab val agecat agecat
gen groups = . replace groups = 1 if byvar=="indian" replace groups = 2 if byvar=="asian" replace groups = 3 if byvar=="black" replace groups = 4 if byvar=="white" replace groups = 5 if byvar=="island"
lab de groups 1 "Indian" 2 "Asian" 3 "Blacks" 4 "White" 5 "Island", replace lab val groups groups
drop if groups==5
bysort byvar: egen normvar = sum(total) format normvar %18.0fc ```
and run the command with long options:
waffle y_ , by(groups) over(agecat) normvar(normvar) note("") showpct

Feedback
Please open an issue to report errors, feature enhancements, and/or other requests.
Change log
v1.23 (18 Oct 2024)
- Added noval to hide values. Especially useful if percent or showpct are used.
- Added wrap to wrap labels. Requires the latest version of the graphfunctions.
- Minor cleanups.
v1.22 (27 Aug 2024) - Fixed a bug where labels were not passing correctly under certain conditions. - Fixed a bug where totals were not showing correctly under certain conditions.
v1.21 (27 May 2024)
- Fixed a bug where the program was running into an error if by() was not specified.
- Fixed and improved returned locals. See return list after running the command.
- The program now displays the value of each dot after the graph is drawn.
v1.2 (26 May 2024)
- Program has been converted into r-class where r(dot) returns the value of each box. See return list after running the command.
- Fixed a major bug with long data format that was not displaying the totals correctly.
- Better treatment of null values. Previous version was still drawing zero categories.
v1.11 (05 May 2024)
- Several bug fixes in how data was being collapsed in both long and wide form.
- For long form, the option normvar() should now by already calculated. For wide form, each row of normvar() is assumed to be different and summed up. These options might still evolve to better fit use cases.
v1.1 (04 Apr 2024) - Rerelease with reworked code. This version is still beta. - Allows long and wide data forms. - More flexibility with colors, markers, sizes, placements.
v1.0 (01 Mar 2022) - First release
Owner
- Name: Asjad Naqvi
- Login: asjadnaqvi
- Kind: user
- Location: Vienna
- Company: WIFO
- Website: https://asjadnaqvi.github.io/
- Twitter: AsjadNaqvi
- Repositories: 52
- Profile: https://github.com/asjadnaqvi
Vienna, Austria
Citation (CITATION.cff)
cff-version: 1.2.0 authors: - family-names: "Naqvi" given-names: "Asjad" - family-names: "Colston" given-names: "Jared" title: "Stata package ``waffle''" version: 1.23 date-released: 2024-10-18 url: "https://github.com/asjadnaqvi/stata-waffle"
GitHub Events
Total
- Create event: 1
- Release event: 1
- Issues event: 7
- Watch event: 3
- Issue comment event: 8
- Push event: 4
Last Year
- Create event: 1
- Release event: 1
- Issues event: 7
- Watch event: 3
- Issue comment event: 8
- Push event: 4
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 8
- Total pull requests: 0
- Average time to close issues: 11 days
- Average time to close pull requests: N/A
- Total issue authors: 6
- Total pull request authors: 0
- Average comments per issue: 0.88
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 5
- Pull requests: 0
- Average time to close issues: about 7 hours
- Average time to close pull requests: N/A
- Issue authors: 5
- Pull request authors: 0
- Average comments per issue: 1.0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- asjadnaqvi (3)
- kakanic2086 (2)
- jdcols01 (1)
- ave05mwg (1)
- ericmelse (1)
- jonolsenglasgow (1)