Stata绘图:绘制华夫饼图-waffle
👇 连享会 · 推文导航 | www.lianxh.cn
🍎 Stata:Stata基础 | Stata绘图 | Stata程序 | Stata新命令 📘 论文:数据处理 | 结果输出 | 论文写作 | 数据分享 💹 计量:回归分析 | 交乘项-调节 | IV-GMM | 时间序列 | 面板数据 | 空间计量 | Probit-Logit | 分位数回归 ⛳ 专题:SFA-DEA | 生存分析 | 爬虫 | 机器学习 | 文本分析 🔃 因果:DID | RDD | 因果推断 | 合成控制法 | PSM-Matching 🔨 工具:工具软件 | Markdown | Python-R-Stata 🎧 课程:公开课-直播 | 计量专题 | 关于连享会
连享会 · 效率分析专题
作者:谢佳松 (中山大学)
邮箱:xiejs3@mail2.sysu.edu.cn
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:
目录
1. 简介
2. waffle 命令
3. 实例演示
3.1 数据处理
3.2 华夫饼图
4. 总结
5. 相关推文
1. 简介
华夫饼图 (Waffle Chart),或称为直角饼图,常用于直观展示百分比数据,因其类似华夫饼而得名。与传统的饼图相比较,华夫饼图表达的百分比更清晰和准确。它共有 100 个方格,每一个方格代表 1%,并通过不同的颜色展示数据特征。本文主要介绍如何使用 waffle
命令绘制华夫饼图。需要注意的是,waffle
命令只能在 Stata 17 中运行。
2. waffle 命令
waffle
命令安装:
ssc install waffle, replace
waffle
命令语法:
waffle varlist [if] [in] [, options]
其中,varlist
为可视化的核心变量。需要注意的是,该变量应为一个比例变量,取值范围为 0-1。options
如下:
wide
:将输出的方形更改为宽矩形。默认情况下,华夫饼图排列格式为 1010,加入 `wide` 后,排列格式变为为 520;by(varlist)
:通过额外的分类变量生成多个华夫饼图;colors(colorlist)
:指定由空格分隔的每个类别的颜色;emptycolors(colorlist)
:指定空方格的颜色,默认为(gs14)
;outlinecolors(colorlist)
:指定方格轮廓的颜色,默认值为 (无);emptyoutlinecolors(colorlist)
:指定空方格轮廓的颜色,默认值为 (无);markersize(numlist)
:改变华夫饼图中方格的大小;scheme(schemename)
:设置不同的主题;title(tinfo)
:添加标题;note(tinfo)
:添加注释;name(tinfo)
:命名图表以供之后引用;legend([contents] [location])
:设置相关图例;coolsgraph
:绘制一个 S 图形 (彩蛋)。
3. 实例演示
3.1 数据处理
在本节中,我们将使用系统自带数据 pop2000.dta
,来展示 waffle
命令的具体使用方法。该数据是一份 2000 年的普查数据,详细记录了不同年龄段人群的统计特征,包括总人口数、不同族裔人口数量等,十分适合进行华夫饼图的展示。由于本文主要展示 2000 年美国人口普查数据中黑种人族裔的结构比例,我们先简单观察一下黑种人族裔人口数量 black 在数据中的结构:
. sysuse pop2000.dta, clear
. list agegrp black
+----------------------+
| agegrp black |
|----------------------|
1. | Under 5 2,804,786 |
2. | 5 to 9 3,205,512 |
3. | 10 to 14 3,121,530 |
4. | 15 to 19 2,929,553 |
5. | 20 to 24 2,628,752 |
|----------------------|
6. | 25 to 29 2,548,968 |
7. | 30 to 34 2,618,602 |
8. | 35 to 39 2,826,361 |
9. | 40 to 44 2,700,418 |
10. | 45 to 49 2,275,191 |
|----------------------|
11. | 50 to 54 1,805,457 |
12. | 55 to 59 1,306,641 |
13. | 60 to 64 1,063,469 |
14. | 65 to 69 881,786 |
15. | 70 to 74 731,386 |
|----------------------|
16. | 75 to 79 550,024 |
17. | 80 to 84 346,465 |
+----------------------+
其中,agegrp 为分组变量。由于该数据年龄每五岁就分为一段,为了使得展示更加简洁,将年龄段重新划分为 0~30 岁、30~64 岁和 65 岁及以上三个组别:
. gen small_age_cat = 0
. replace small_age_cat = 1 if inrange(agegrp,1,6)
. replace small_age_cat = 2 if inrange(agegrp,7,13)
. replace small_age_cat = 3 if inrange(agegrp,14,17)
. label define age_cat 1 "Under 30" 2 "30-64" 3 "65 & up"
. lab val small_age_cat age_cat
接下来以黑种人 black、白种人 white 和亚裔 asian 为例进行展示。数据处理过程如下:
. * 生成三种族裔的总人口数以及总人口数
. foreach x of varlist black white asian total{
2. egen tot_`x' = sum(`x')
3. }
. * 分别生成三种族裔人口占总人口数的比例:
. gen pct_tot_black = tot_black / tot_total
. gen pct_tot_white = tot_white / tot_total
. gen pct_tot_asian = tot_asian / tot_total
. * 按照0~30岁、30~64岁以及65岁及以上三个组别的新分组生成总人口数
. egen small_age_tot_total = sum(total), by(small_age_cat)
. * 分别生成三种族裔人口在不同年龄段的人数占比
. foreach x in white black asian{
2. gen pct_`x'_age = `x' / total
3. egen small_age_tot_`x' = sum(`x'), by(small_age_cat)
4. gen pct_`x'_small_age = small_age_tot_`x' / small_age_tot_total
5. drop small_age_tot_`x'
6. }
. * 只保留分类变量和百分比变量:
. drop total-femisland tot_black-tot_total small_age_tot_total
3.2 华夫饼图
简单的数据处理完成后,就可以进行华夫饼图的绘制了。首先,不考虑任何 option
,直接绘制 2000 年人口普查中黑种人占比的华夫饼图:
. waffle pct_tot_black
由数据可知,在 2000 年人口普查中,黑种人占比为 12.39%,因此所对应的华夫饼图中有色格子即为 12 个。如果觉得该图中方格过大,可以通过 markersize(numlist)
进行调整:
. waffle pct_tot_black, markersize(2)
在默认情况下,华夫饼图中方格的排列为 1010,可以通过 `wide` 将其排列变化为 520:
. waffle pct_tot_black, wide
当然,可以通过增加各种常用的 Stata 绘图命令使得图形丰富和美观:
. * 添加标题、注释,更改正方形的颜色、轮廓和大小
. waffle pct_tot_black, title("Share of Black U.S. population in 2000 Census", ///
> margin(medlarge)) note("Data from the U.S. 2000 Census") markersize(6) ///
> colors(teal) emptycolors(white) outlinecolors(gs5) emptyoutlinecolors(gs5)
waffle
命令还可以进行不同年龄组别的比较,通过 by()
实现:
. waffle pct_black_age, by(agegrp) scheme(s1mono)
该图能够给予我们的信息量非常大。可以看出,随着年龄段的增加,美国黑种人口数量占比逐渐下降。相应的百分比具体值也可以直接通过深色方格数量所体现。进一步,按照新的分组方式,绘制黑种人占比的华夫饼图:
. * rows(1) option 为:使得一行输出所有图片,防止多行
. waffle pct_black_small_age, by(small_age_cat, rows(1)) scheme(s1mono)
同样,该结果可以以宽模式 (520) 进行展示:
. waffle pct_black_small_age, by(small_age_cat, rows(3)) ///
> title("Share of Black U.S. population in 2000 Census by Age", ///
> margin(medlarge)) note("Data from the U.S. 2000 Census") ///
> markersize(3) colors(teal) emptycolors(white) outlinecolors(gs5) ///
> emptyoutlinecolors(gs5) wide scheme(s1mono)
4. 总结
本推文较为详细地介绍了一个用于华夫饼图绘制的命令 waffle
。该命令的使用需要注意以下几点:
需要在 Stata 17 版本运行; 数据结构要符合华夫饼图的绘制原则。即需要一个百分比的数据 (注意:取值范围需要从 0-1,而非 0-100),以及一个分组变量; waffle
对于分组变量格式不敏感,即字符型和数值型都可以。在数值型分组变量的情况下,最好给取值赋予label,这样输出的图形才会显示相应的分组名称;如果有另一个维度的分组变量,通过加入 by()
,waffle
绘制出的华夫饼图能够给予我们更多的信息。
5. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh 绘图, m
安装最新版lianxh
命令:
ssc install lianxh, replace
专题:Stata教程 普林斯顿Stata教程(二) - Stata绘图 专题:Stata绘图 Stata绘图:随机推断中的系数可视化 Stata绘图:重新定义坐标轴刻度标签 Stata绘图:用-bytwoway-实现快速分组绘图 Stata绘图:一个干净整洁的-Stata-图形模板qlean Stata绘图:怎么在Stata图形中附加水平线或竖直线? Stata绘图:在图片中添加虚线网格线 Stata绘图:制作教学演示动态图-GIF Stata绘图:绘制一颗红心-姑娘的生日礼物 Stata绘图:bgshade命令-在图形中加入经济周期阴影 Stata绘图:让图片透明——你不要掩盖我的光芒 Stata:图形美颜-自定义绘图模板-grstyle-palettes Stata绘图:多维柱状图绘制 Stata绘图:用暂元统一改变图形中的字号 一文看尽 Stata 绘图 Stata绘图:绘制单个变量的时序图
课程推荐:因果推断实用计量方法
主讲老师:丘嘉平教授
🍓 课程主页:https://gitee.com/lianxh/YGqjp
New! Stata 搜索神器:
lianxh
和songbl
GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉 使用:
. lianxh DID 倍分法
. songbl all
🍏 关于我们
连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。 直通车: 👉【**百度一下:**连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。