Stata绘图系列——饼形图绘制
本文作者:智淼,中南财经政法大学统计与数学学院
本文编辑:王思雨
技术总编:李婷婷
Stata and Python 数据分析
爬虫俱乐部Stata基础课程、Stata进阶课程和Python课程可在小鹅通平台查看,欢迎大家多多支持订阅!如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~导读
饼图是较为基础的统计图形之一,常用来描述和比较变量的特征,满足了丰富数据表达的需求。在Stata中我们可以绘制出多种形式的饼图,绘制的命令为graph pie,具体有三种类型,语法如下:
(1)一组变量(varlist)中每个变量数据的比例。
graph pie varlist [if] [in] [weight] [, options]
(2)同一个变量(varname)在不同的分组(over(varname))中的比例。
graph pie varname [if] [in] [weight], over(varname) [options]
(3)某个变量(varname)不同取值的频率。
graph pie [if] [in] [weight], over(varname) [options]
02
构造数据
我们假定对一组学生的支出进行跟踪调查,记录他们在图书、食宿、交通社交和通讯上的月度支出。数据模拟如下:
clear all
set seed 1234567
set obs 1000
gen id = mod(_n,300)
bysort id: gen int month = _n+3*uniform()
gen int 图书= uniform()*400
gen int 食宿= uniform()*1200
gen int 交通= uniform()*200
gen int 社交= uniform()*500
gen int 通讯= uniform()*300
drop if uniform()<.3 //随机删去30%的样本
模拟的支出分布数据形式如下:
饼形图的基本绘制
(1)绘制饼图,描述各个月份之间样本数量的占比,相当于按月统计样本数量频率。
graph pie, over(month) legend(title(Sample distribution)) //legend(title())表示添加图例和标题
(2)绘制饼图,描述所有学生图书支出总和在每个月内的占比。
graph pie 图书, over(month) legend(title(Expenditure on books))
(3)绘制饼图,描述学生在图书、食宿、交通、社交、通讯上的支出占比。
graph pie 图书 食宿 交通 社交 通讯,legend(title(Different types of expenditure))
在扇形上进行标注
为了更清楚显示每一块扇形的类别或数值,我们可以直接在扇形上标注总数、类别名或百分比,实现该功能的选项为plabel(),语法如下:
plabel({#|_all} {sum|percent|name|"text"} [, plabel_subopts])
graph pie 图书 食宿 交通 社交 通讯, plabel(_all sum) legend(title(显示总数)) //总数
graph pie 图书 食宿 交通 社交 通讯, plabel(_all name) legend(title(显示类别名)) //类别名
graph pie 图书 食宿 交通 社交 通讯, plabel(_all percent) legend(title(显示百分比)) //百分比
graph pie 图书 食宿 交通 社交 通讯, plabel(_all name, size(*1.2) color(white)) legend(title(Different types of expenditure))
此外,为了突出显示某一部分,我们可以只标记该部分的数量或比例。比如我们想强调食宿花费情况,设置只在扇形上标记食宿费用所占百分比。
graph pie 图书 食宿 交通 社交 通讯, plabel(2 percent, size(*2) color(white)) title("食宿花费情况")
plabel(2 percent, ...)中,“2”是一组变量(varlist)中食宿的位置,也可以在图例中判断变量位置。类似的,如果我们只想显示图书费用的百分比,将“2”替换为图书的次序“1”即可。
如果我们想只想展示图书所占比例和通讯的名称,只需要在两个plabel()选项中分别设置比例、名称,具体如下。
graph pie 图书 食宿 交通 社交 通讯, plabel(1 percent, size(*1.2) color(white)) plabel(3 name, size(*1.2) color(white))
饼状图的配色
关于改变饼状图的颜色,我们既可以自定义每块扇形的颜色,也可以使用stata给出的配色方案。此外,还可以更改扇形轮廓的粗细和颜色。
(1)自定义颜色
更改某一个或多个扇形的颜色,此处我们使用的选项语法为:
pie({numlist|_all}, pie_subopts)
比如第一个类别(图书)的份额用蓝色标记,第三个类别(交通)使用绿色,完整的程序如下。
graph pie 图书 食宿 交通 社交 通讯, plabel(_all name, size(*1.2) color(white)) pie(1,color(blue)) pie(3,color(green))
(2)使用配色模版
我们可以使用scheme()选项选择,比如选用scheme(sj)给出Stata Journal可以接受的黑白配色,或选用scheme(economist)给出经济学家杂志使用配色等。
graph pie 图书 食宿 交通 社交 通讯, plabel(_all name, size(*1.5) color(white)) scheme(sj) note(Stata Journal)
graph pie 图书 食宿 交通 社交 通讯, plabel(_all name, size(*1.5) color(white)) scheme(economist) note(The Economist magazine)
(3)设置轮廓的粗细和颜色
这里使用到的选项是line(line_options),其中lwidth(linewidthstyle)选项设置线条的粗细,lcolor(colorstyle)设置线条的颜色。设置粗细和颜色的选项和上文中类似,比如thin和thick分别表示细和粗,颜色选用白色(white)。
graph pie 图书 食宿 交通 社交 通讯, plabel(_all name, size(*1.5) color(white)) pie(1,color(green)) pie(2,color(pink)) pie(3,color(blue)) line(lw(thick) lc(white))
以上内容介绍了Stata中饼状图的基本使用命令和例子,之后的推文中我们会进一步介绍饼状图的进阶使用,同时Stata绘图系列也在持续更新中,敬请期待~
最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐 【爬虫实战】深交所服务业年报数据
“挂羊头卖狗肉”?
Python与excel交互--xlsxwriter模块cnmapsearch——离公司最近的快餐店在哪
Python中的异常处理 Python交互式数据可视化——酷炫的Altair库 hk系列命令(3)—— hktrade hk系列命令(2)—— hkar hk系列命令(1)—— hkstock 超好用的字符串方法 基于Python的假设检验实现Stata与MySQL交互--基础操作 Jupyter Notebook中的魔术命令《Stata正则表达式》由中国金融出版社出版发行 匿名函数lambda到底怎么用?Stata绘图系列—NBER Working paper仿图Camelot:从PDF中提取表格数据Stata之计算财务指标——融资约束关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:1)必须原创,禁止抄袭;2)必须准确,详细,有例子,有截图;注意事项:1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。