Stata绘图系列——玩转绘图通用选项之图例
本文作者:智 淼,河南大学国际教育学院
本文编辑:陈志林
技术总编:李婷婷
Stata&Python云端课程来啦!
好消息好消息,爬虫俱乐部开辟小鹅通战场!!爬虫俱乐部隆重推出小鹅通网络课程,将Stata基础课程,Stata进阶课程和Python课程都上传至小鹅通平台,欢迎大家多多支持订阅!报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台留言哦。如需了解详情,可以通过课程链(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~
1. 图例基本介绍
图例是指对图上各种符号和颜色所代表内容的说明,有助于区别不同的变量。当我们使用命令twoway比较两个变量的分布时,Stata会自动创建图例。
我们使用auto.dta绘制变量length对displacement、mpg的散点图并对其进行线性拟合。
sysuse auto, clear
twoway (scatter length displacement mpg) (lfit displacement mpg) (lfit length mpg)
从上图可以看出,两条拟合线虽然颜色不同但是都被命名为“Fitted values“。可见Stata自动生成的图例并不能自动标注不同变量的拟合线,这时就需要我们自定义图例,用到的命令选项是legend(),具体见help legend_options。
label(# "text" ["text"]):设置图例的标签,将"text"作为第#个键对应的标签(注:“键”是由符号和描述性文本一起组成的,如上图中有四个键,分别是Length、Displacement以及它们分别对应的Fitted values)。
order(# # ...):设置键是否显示,并改变键的排序。
cols(#)/rows(#):设置图例所占的列/行数。
textfirst:设置标签的文本描述在前,符号在文本后。
colfirst:设置按照列顺序显示图例。
2. 定义图例的标签
我们使用label()对标签重新定义,其中数字#是根据图例出现的顺序确定的,默认顺序是按照行从左到右。并且无论生成图例的图形命令是什么,都可以用label()定义标签。对于上面的例子,我们指定第3个键的标签为“Length-mpg fit”,第4个键的标签为“Displacement-mpg fit”,这样就可以区分两条拟合线了。
twoway (scatter length displacement mpg) (lfit length mpg) (lfit displacement mpg),legend(label(1 "Length") label(2 "Displacement") label(3 "Length-mpg fit") label(4 "Displacement-mpg fit"))
3. 定义图例显示的顺序
我们可以使用order()选项更改图例中的顺序,比如order(3 4 1 2)将键按照3、4、1、2的顺序进行排序。
twoway (scatter length displacement mpg) (lfit length mpg) (lfit displacement mpg),legend(label(1 "Length") label(2 "Displacement") label(3 "Length-mpg fit") label(4 "Displacement-mpg fit") order(3 4 1 2))
order()选项还可以替换、隐藏图例中标签的文本。在这里,我们隐藏前两个键,即不显示“Length”和“Displacement”,并替换键3和4的文本。
twoway (scatter length displacement mpg) (lfit length mpg) (lfit displacement mpg),legend(order(3 "Length-mpg fit" 4 "Displacement-mpg fit" ))
使用order()还可以在图例中插入文本,比如order(1 2 - "text" 3),会在键2和键3之间插入文本“text”。具体见:
twoway (scatter length displacement mpg) (lfit length mpg), legend(label(1 "Length") label(2 "Displacement") label(3 "Length-mpg fit") order(1 2 - "Predicted:" 3))
4. 定义图例显示的行/列数
Stata还提供了一些选项可以用来修改图例的显示格式,比如cols(#)和rows(#)。col(1)可以把所有的键放置在同一列:
twoway (scatter length displacement mpg) (lfit length mpg) (lfit displacement mpg),legend(label(1 "Length") label(2 "Displacement") label(3 "Length-mpg fit") label(4 "Displacement-mpg fit") cols(1))
我们还可以改变图例标签中文本和符号的出现顺序。使用textfirst选项时,标签的描述性文本将首先出现,然后才是符号。
twoway (scatter length displacement mpg) (lfit length mpg) (lfit displacement mpg),legend(label(1 "Length") label(2 "Displacement") label(3 "Length-mpg fit") label(4 "Displacement-mpg fit") textfirst)
如果我们习惯的阅读顺序是从列开始读,而不是从行读,可以添加colfirst选项让图例的键按列顺序显示。
twoway (scatter length displacement mpg) (lfit length mpg) (lfit displacement mpg),legend(label(1 "Length") label(2 "Displacement") label(3 "Length-mpg fit") label(4 "Displacement-mpg fit") colfirst)
5. 定义图例的位置和颜色
调整图例的位置和《Stata绘图系列——玩转绘图通用选项(一)》中介绍的“ 绘图中的标题及位置”中使用的命令基本一致。使用position()选项选择图例放置的方位,比如将图例放置在七点钟位置。还可使用ring(0) 选项将标题放置在绘图区域,ring()的值越高,则项目将远离打印区域。
twoway (scatter length displacement mpg) (lfit length mpg) (lfit displacement mpg),legend(label(1 "Length") label(2 "Displacement") label(3 "Length-mpg fit") label(4 "Displacement-mpg fit") colfirst ring(0) position(7))
同样地,我们也可以使用color()、size()设置标签文本颜色和大小,使用box显示文本框,并用fcolor()设置文本框填充颜色。有关文本框的详细设置在之前的推文中有详细介绍。这里我们设置显示文本框,并更改其边框和填充颜色,按照列的顺序展示键:
twoway (scatter length displacement mpg) (lfit length mpg) (lfit displacement mpg),legend(label(1 "Length") label(2 "Displacement") label(3 "Length-mpg fit") label(4 "Displacement-mpg fit") colfirst size(large) color(blue) fcolor(gold) box)
region()选项控制放置图例的整个框。在这里,我们指定填充颜色为暗灰色,线条较粗且为深蓝色,文本和框之间留有中等大小的边距。
twoway (scatter length displacement mpg) (lfit length mpg) (lfit displacement mpg),legend(label(1 "Length") label(2 "Displacement") label(3 "Length-mpg fit") label(4 "Displacement-mpg fit") colfirst size(large) color(red) region(fcolor(dimgray) lcolor(navy) lwidth(thick) margin(medium)))
以上就是今天对于Stata绘图图例选项的介绍了,之后还会继续为大家分享更多的Stata绘图干货,敬请期待~
最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
【基础篇】数据类型介绍——list、tuple和range对象
覆盖北交所的“cnstock”复工了!
高考热度大数据爬虫——谁才是院校顶流
跨框架数据操作
河南大学经济学院2022年Stata数据处理与爬虫技术开班仪式顺利召开爬虫俱乐部的精彩答疑——local function
爬虫俱乐部精彩答疑——Python中的三种文件读取方法爬虫俱乐部的精彩答疑--认真仔细方能写出好程序爬虫俱乐部Python精彩答疑——更换Jupyter Notebook浏览器及dropna()参数详解
爬虫俱乐部的精彩答疑--如何打开Excel中扩展名与文件源码不符的文件
解锁《梦华录》之东京繁华生活
爬虫俱乐部的精彩答疑——DOS命令
爬虫俱乐部的精彩答疑之换行问题
爬虫俱乐部的精彩答疑--路径设置乱码怎么破?
爬虫俱乐部的精彩答疑--putdocx的二三事
爬虫俱乐部精彩答疑之Python篇
爬虫俱乐部的精彩答疑--花式重命名变量
今天你还是“刘畊宏女孩”吗?爬虫俱乐部在山东财经大学金融学院暑期Stata网课上的精彩答疑
关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。