Stata连享会 主页 || 视频 || 推文 || 知乎 || Bilibili 站
温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc
,ihelp
,rdbalance
,gitee
,installpkg
⛳ Stata 系列推文:
作者:谢佳松 (中山大学)
邮箱:xiejs3@mail2.sysu.edu.cn
目录
华夫饼图 (Waffle Chart),或称为直角饼图,常用于直观展示百分比数据,因其类似华夫饼而得名。与传统的饼图相比较,华夫饼图表达的百分比更清晰和准确。它共有 100 个方格,每一个方格代表 1%,并通过不同的颜色展示数据特征。本文主要介绍如何使用 waffle
命令绘制华夫饼图。需要注意的是,waffle
命令只能在 Stata 17 中运行。
waffle
命令安装:
ssc install waffle, replace
waffle
命令语法:
waffle varlist [if] [in] [, options]
其中,varlist
为可视化的核心变量。需要注意的是,该变量应为一个比例变量,取值范围为 0-1。options
如下:
wide
:将输出的方形更改为宽矩形。默认情况下,华夫饼图排列格式为 10by(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 图形 (彩蛋)。
在本节中,我们将使用系统自带数据 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
简单的数据处理完成后,就可以进行华夫饼图的绘制了。首先,不考虑任何 option
,直接绘制 2000 年人口普查中黑种人占比的华夫饼图:
. waffle pct_tot_black
由数据可知,在 2000 年人口普查中,黑种人占比为 12.39%,因此所对应的华夫饼图中有色格子即为 12 个。如果觉得该图中方格过大,可以通过 markersize(numlist)
进行调整:
. waffle pct_tot_black, markersize(2)
在默认情况下,华夫饼图中方格的排列为 10
. 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)
同样,该结果可以以宽模式 (5
. 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)
本推文较为详细地介绍了一个用于华夫饼图绘制的命令 waffle
。该命令的使用需要注意以下几点:
waffle
对于分组变量格式不敏感,即字符型和数值型都可以。在数值型分组变量的情况下,最好给取值赋予label,这样输出的图形才会显示相应的分组名称;by()
,waffle
绘制出的华夫饼图能够给予我们更多的信息。
Note:产生如下推文列表的 Stata 命令为:
lianxh 绘图, m
安装最新版lianxh
命令:
ssc install lianxh, replace
免费公开课
最新课程-直播课
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 文本分析、机器学习、效率专题、生存分析等 | |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
⛳ 课程主页
⛳ 课程主页
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会-常见问题解答:
✨ https://gitee.com/lianxh/Course/wikis
New!
lianxh
和songbl
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh