查看原文
其他

Stata绘图系列——玩转绘图通用选项(一)

爬虫俱乐部 Stata and Python数据分析 2023-01-01

本文作者:智  淼,河南大学国际教育学院

本文编辑:陈志林

技术总编:李婷婷


Stata&Python云端课程来啦!

     为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程Stata基础课程Stata进阶课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~

1.导读

Stata几乎囊括了所有基础的绘图指令,包括散点图(scatter)、线图(line)、直方图(histogram)、饼图(pie)、箱线图(box)、矩阵图(matrix)等,能满足我们基本的绘图需求。绘图指令看似繁琐复杂,但在梳理后我们发现设置图形的选项很多是通用的。本文为大家系统介绍一下Stata绘图的通用选项,包括对颜色、线条、散点、标题注释、文本框等元素的设置。

2.实例引入

 我们先通过一个实例引入,使用Stata自带示例数据集citytemp.dta进行演示,其中变量tempjan为美国各地区一月份平均气温。为变量tempjan绘制直方图,设置组数为15,颜色为金色,将各组频数标注在矩形正上方。并为其拟合一个正态分布的钟形线(bell curve),用以短线连接的蓝色曲线表示,添加标题“美国各地区一月平均气温”和注释“Data Source:citytemp.dta”。

clear allsysuse citytemp, clear histogram tempjan,bin(15) gap(15) frequency addlabels fcolor(gold) normal normopts(lcolor(blue)lwidth(thick) lpattern(shortdash)) title(美国各地区一月平均气温) note(Data Source:citytemp.dta) graphregion(ifcolor(gs14) fcolor("0 47 167"))

运行以上程序,结果见下图:


可以看出,上图中绘图元素主要有线、数值、坐标轴、标题及注释、空白区域,用户可以对其颜色、位置、大小、线的连接方式等自定义,这样就可以制作出具有个性化又美观简洁的图形啦~

本文接下来从绘图颜色线条散点标题注释文本框这几方面的内容展开。


3.绘图中的颜色

在Stata绘图中,颜色是最经常使用的选项之一,图形本身、绘图背景、坐标轴等的关于颜色的具体选项有:


  • color(colorstylelist):设置内部及边框的颜色和不透明度。

  • fcolor(colorstylelist):设置内部填充色和不透明度。

  • lcolor(colorstylelist):设置外部边框或线条的颜色和不透明度。

关于colorstyle的选项:颜色的设置,可以直接输入英文颜色名,如black、blue、gold、green、yellow 等。灰度设置用gs加上数字0-12表示,如gs0表示白色,gs1表示深灰色,gs12表示白色。还可以直接输入颜色的RGB值来设置颜色,比如克莱因蓝:color("0 47 167")。

我们来绘制tempjan的直方图,设置内部填充色为金色(gold)且不透明度为80%,边框颜色为克莱因蓝(RGB:0 47 167),代码如下:

histogram tempjan, bin(15) gap(15) frequency fcolor(gold%80) lcolor("0 47 167")

 绘制的直方图见下图:

除了以上介绍的颜色选项外,Stata还可以使用CMYK、HSV模式设置颜色,具体可以见help colorstyle。下面插入一张常用色卡供大家参考。


4.绘图中的线条

Stata绘图中,我们不仅可以改变线条的颜色,还可改变其粗细、连接方式、对齐方式(选择轮廓线是在内部、外部,还是居中)等。


01

线条粗细
  • lwidth():设置线条粗细。

  • 选项有none、vvvthin、vvthin、vthin、thin、medthin、medium、medthick、thick、vthick、vvthick、vvvthick,依次从没有边框(none)到最粗(vvvthick)。


02

线条连接方式
  • lpattern():设置线的连接方式。

  • 选项有实线、虚线、点线、虚线+点线、短虚线、长虚线、无形的线等,分别对应选项:solid、dash、dot、dash_dot、shortdash、longdash、blank等。

03

线条对齐方式
  • lalign():设置线条对齐方式。

  • 对齐方式为内部,外部和居中,对应选项分别为inside,outside和center。

我们使用折线图进行演示,使用短线连接(shortdash),线条为较粗(thick)。

sysuse sp500, cleartwoway line close date, lwidth(thick) lcolor(maroon) lpattern(shortdash)


运行后折线图如下:


5.绘图中的散点

和线条一样,在Stata绘图中散点的运用也是很普遍的,除了调整点的颜色、大小、外部轮廓线的粗细和对齐方式以外,还可以调整点的样式和角度:比如将普通的圆点变为三角形、菱形、正方形、一些特殊符号等。

点的颜色、外部轮廓线的粗细、对齐方式的指令和上文介绍略有区别。颜色通过选项mcolor()mfcolor()mlcolor()调整,分别对应总体颜色,内部填充色和外部轮廓线颜色,颜色具体设定和第3部分一致。点外部轮廓线的粗细和对齐方式通过mlwidth()mlalign()来改变,具体选择和第4部分一致。点的大小通过msize()来进行自定义,从小到大包括tiny, vsmall, small, medium, large,huge, vhuge等。

我们使用数据auto.dta来绘制汽车价格Price与耗油量Mileage的散点图,将点的内部填充色与轮廓线颜色设置成不同的颜色,轮廓线粗细设置为thick并内部对齐,点的大小为medium。具体代码如下:

sysuse auto, clearscatter mpg price,mcolor(pink) mlcolor(maroon) msize(medium) mlwidth(thick) mlalign(inside)

运行后得到的散点图如下:


我们还可以自定义点的形状,使用选项msymbol(),其中可以用“oh”表示用空心圆描点,用“Dh”表示用空心菱形描点,用“A”表示用一个箭头描点,用“T”表示用三角形描点等。将上图中点的形状定义为空心菱形:

scatter mpg price, mcolor(pink) mlcolor(maroon) msize(medium) mlwidth(thick) mlalign(inside) msymbol(Dh)

程序运行后见下图:


6.绘图中的标题及位置

标题有助于提供更多解释图表内容的信息。Stata绘图包括四个标题选项,用于向图形中添加解释性文本:title()subtitle() 、note()caption()。该部分将简单介绍如何使用这些选项添加标题,以及如何自定义标题的内容和位置。关于标题的官方指令说明见help title_options。


01

标题与备注

同时包含以上四个标题选项的代码如下:

sysuse auto, clearscatter mpg price,title("这里是title") subtitle("这里是subtitle") note("这里是note") ///caption("这里是caption")

不同标题、注释的默认位置见下图:

Stata还提供了其他几个标题选项,用于为图表顶部(t1title () t2title())、底部(b1title()b2title())、左侧(l1title()l2title())和右侧(r1title()r2title())设置标题。

scatter mpg price,t1title("My t1title") t2title("My t2title") b1title("My b1title") ///b2title("My b2title") l1title("My l1title") l2title("My l2title") ///r1title("My r1title") r2title("My r2title")


标题名太长,想分成两行怎么办?我们可以在title()中使用多组引号来标识不同的行,比如:

scatter mpg price,title("美国1978年""汽车数据") subtitle("1978 automobile data")


02

更改标题位置

我们还可以更改标题的位置与角度。使用到的选项是position(clockposstyle)和ring(ringposstyle)。其中,position(#)根据12小时制表盘时针位置指定方向,ring(#)则指定标题出现在绘图区域的距离。

  • position(#)中,#取[0,12]内的整数。其中0表示“表盘”的中心位置,见下图。

  • ring(#)中,#取[0,100]内的实数。下图是Stata官方给出的示意图标明了ringposstyle取不同值的标题位置,以及标题、副标题等的默认位置。可以看出,#为0表示在绘图区域(plot region)内,#>0,指定为绘图区域外的位置,该值越大,离绘图区域越远。

我们仍然用示例数据auto.dta展示,使标题放置在绘图区域内、一点钟位置:

scatter mpg price,title("美国1978年汽车数据",position(1) ring(0)) subtitle("1978 automobile data")


03

更改文本框

标题、副标题、注释实际上是都被放置在文本框(textbox)内的。文本框包含一行或多行文本,其边框可设置为可见或不可见(使用选项box/nobox)。这里我们只介绍对文本对齐方式的更改,使用到的选项是justification(),可以选择左对齐(left)、居中对齐(center)、右对齐(right)。详细说明可见 help textbox_options。

我们使标题的文本框可见,并选择文本左对齐,同时为了更清楚看到对齐效果,加入选项bexpand,使文本框跨越绘图区域。

scatter mpg price,title("美国1978年汽车数据",box bexpand justification(left)) subtitle("1978 automobile data")


 如果再加上选项span,就可以使标题所在文本框横跨图形的整个宽度或长度。下图为span定义的区域和绘图区域的比较。

这里需要注意的是justification()与position()的区别。前者定义文本框中标题的对齐方式,后者控制了文本框(标题)的位置。当文本框位置确定时,更改justification()就会有如下的效果:


我们也可以修改文本框的背景及边框颜色、线条的样式、边框的粗细等,这些选项和第2、3部分一致,这里就不再进行赘述。

以上是对Stata绘图通用选项第一部分的介绍,希望能帮助大家绘制出满意的图形~之后我们将继续介绍其它的绘图通用选项。

END
最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。



腾讯课堂课程二维码




            


 对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!











往期推文推荐

出人意料!这所大学的A级学科总数竟超越清华北大!

Stata数据读入——打开方式不同?

数据类型——Dict、Set与Frozenset简析

Stata小贴士之外部命令安装路径

有一种夏天叫做宫崎骏的夏天

换装术|多个Excel文件如何一键转为dta格式

【基础篇】Python可变对象与不可变对象

Stata绘图系列——细节掌控绘图区域!

 4月A股的收官战之概念板块哪家强?

解放双手!你必须要会的两个命令—inlist & inlist2

【基础篇】字符串之判断方法

Stata绘图系列——让你的直方图随心所欲

【爬虫篇】湖人无缘季后赛,球迷如何回应

客官,要来份四象限图吗?

Python实现简繁体转换

Stata与Python交互方法及数据传递

 “青铜”爬“王者”

 留下想要的变量,你会几种方法?

 Python:朋友圈配图,我承包了

 绘制全国祠堂密度地图

 如何使用Stata绘制一幅好看的柱状图?

【爬虫篇】基于selenium爬取美团评论

 双标的莱万——足球无关政治?!

 Stata处理重复值:duplicates

It's time to send a flower to your lover!        2021各省GDP新鲜出炉

 爬虫实战-采集全国各省疫情数据

 log——为你的操作保驾护航

 一行代码教你玩转emoji

 票房遇冷的春节档口碑冠军丨《狙击手》影评分析

 学习丰县,营造良好营商环境!

 大国丢娃图:从川渝到徐州!

 丰县“失火”,殃及徐州:股市超跌近30亿!

 Unicode转义字符——编码与解码

        徐州!徐州!

        B站弹幕爬虫——冬奥顶流冰墩墩&雪容融

        不会用Stata做描述性统计表?so easy!

        丰沛之地:备足姨妈巾

关于我们 


   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存