查看原文
其他

Stata绘图系列——玩转绘图通用选项之坐标轴

爬虫俱乐部 Stata and Python数据分析 2022-12-31

本文作者:智淼,中南财经政法大学统计与数学学院

本文编辑:赵微微

技术总编:李婷婷

Stata&Python云端课程来啦!

      好消息好消息,爬虫俱乐部开辟小鹅通战场!!爬虫俱乐部隆重推出小鹅通网络课程,将Stata基础课程Stata进阶课程Python课程都上传至小鹅通平台,欢迎大家多多支持订阅!报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台留言哦。如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~

引言坐标轴作为度量的参考框架,是绘图中非常重要且基础的一部分。Stata中默认的坐标轴格式为单坐标轴且轴上有刻度。但在实际操作中,该默认格式远不能满足我们的需求,因此我们需要对坐标轴刻度个数标题等进行重设。 本节介绍的指令有:
  • xscale/yscale(off): 无x/y坐标轴。
  • xscale/yscale(noline):无x/y坐标轴但显示刻度及单位。
  • xaxis/yaxis(# [# ...]):设置x/y坐标轴的个数,其中#最小为1,最大为9。
  • xtitle/ytitle():设置x/y轴标题。
  • xlabel/ylabel(): 设置x/y轴刻度值。
  • labsize(): 设置刻度值数字的大小。
  • labcolor():设置刻度值数字的颜色。
 下面依次详细讲解这些指令并举例说明, 关于坐标轴的所有指令见help axis_scale_options

一、坐标轴及刻度

当不需要展示具体数值时,我们可以选择隐去x轴和y轴,使图形更加简洁,使用到的命令是xscale(off)yscale(off)。这里使用Stata自带示例数据集citytemp.dta进行演示,其中变量tempjan为美国各地区一月份平均气温。

sysuse citytemp.dta, clearhistogram tempjan, bin(15) frequency yscale(off) xscale(off)

接下来我们隐去x、y轴,但保留轴上刻度和变量名,使用到的命令是xscale(noline)yscale(noline)
histogram tempjan,bin(15) frequency plotregion(style(none)) ///yscale(noline) xscale(noline)








二、双坐标轴

如果我们使用命令twoway比较tempjan(一月份平均气温)和 cooldd(寒冷天气的天数) 的分布时:

twoway (histogram tempjan, bin(15) frequency color(pink%30)) (histogram cooldd,bin(15) frequency color(blue%50)), legend(position(7) label(1 "Tempjan") label(2 "Coldday"))

可以看出表示一月平均气温(tempjan)的直方图缩成一团。这是为什么呢?在观察数据集后,我们发现tempjan的取值范围为[2.2, 72.6],而cooldd的取值范围为[0, 4389],它们相差太大,因此共用一个坐标轴并使用相同的刻度值显然就不太合适了。这时就可以设置两个x轴,并对于每个x轴设置合适的刻度。

我们用xaxis()设置x轴个数,xaxis(1)标记第一个坐标轴,xaxis(2)标记第二个坐标轴:
twoway (histogram tempjan, xaxis(1) bin(15) frequency fcolor(pink%30)) (histogram cooldd, xaxis(2) bin(15) frequency fcolor(blue%50)), legend(position(7) label(1 "Tempjan") label(2 "Coldday"))

Stata会自动为不同坐标轴设置合适的刻度,这样一来,两个变量的直方图都会显示正常了。当然有双x轴就有双y轴,和上面命令类似,我们使用yaxis(1) 和 yaxis(2)即可实现。

三、坐标轴标题

ytitle()可以设置纵坐标标题,xtitle()设置横坐标标题。需要注意的是一旦我们定义不标出x、y轴,比如xscale(off),坐标轴标题也随之不再显示。
histogram tempjan, ytitle(频数) xtitle(温度) bin(15) frequency

四、坐标轴刻度值

ylabel()可以设置纵坐标刻度值,xlabel()设置横坐标刻度值。见help axis_label_options
histogram tempjan,ylabel(0(20)180) xlabel(0 10 20 30 40 50 60 70 80) bin(15) frequency

如上述程序所示,在定义坐标轴刻度时,可以设置起点,间距和终点,也可一个一个自定义。具体有以下几种设置方式:

刻度表示举例解释
###5大约设置5个刻度
#####10每两个主刻度之间进行10等分(仅在mlabel() and mtick()中使用)
#(#)#0(10)80从0到80,刻度区间为10
min max0 5 10 20列出每个刻度的具体值
为了让图形更加简洁可观,一般设置的次刻度无需显示标签值,只显示分割坐标轴的短线,用到的选项是ymtick(#)xmtick(#),其用法与ylabel和xlabel一样,只不过中间的“#”表示分割每两个主刻度间的间隔。

五、坐标轴刻度值的形式

我们还可以改变坐标轴上刻度值的大小、长度、宽度、颜色,在之前的推文《Stata绘图系列——玩转绘图通用选项(一)》中对颜色的设定有详细介绍。在坐标轴中,我们通过labsize()选项改变刻度值形状的大小, labcolor()来设定其颜色:
histogram tempjan,ylabel(0(20)180 , labsize(large) labcolor(blue)) xlabel(0(10)80) bin(15) frequency

接下来我们来设置坐标轴刻度标记的长度、粗细和颜色,用到的选项分别为tlength()tlwidth()tlcolor() 。

histogram tempjan,ylabel(0(20)180 ,tlength(*2) tlwidth(thick) tlcolor(red) labsize(large) labcolor(blue)) xlabel(0(10)80) bin(15) frequency

在上图中,我们将坐标轴刻度标记长度设置为默认的两倍、比较粗(thick)、颜色为红色(red)。

以上就是对于Stata绘图中坐标轴的介绍。通过对Stata绘图的指令的观察,很容易发现所有的图形绘制命令都是图形类别命令与通用选项的组合,因此梳理常用绘图选项是很有必要的。至此,Stata绘图通用选项部分已经介绍完毕(之前的内容请点击《Stata绘图系列——玩转绘图通用选项(一)》《Stata绘图系列——玩转绘图通用选项之图例》查看),之后还会继续为大家分享更多的Stata绘图干货,敬请期待~


(END)
重磅福利!为了更好地服务各位同学的研究,爬虫俱乐部将在小鹅通平台上持续提供金融研究所需要的各类指标,包括上市公司十大股东、股价崩盘、投资效率、融资约束、企业避税、分析师跟踪、净资产收益率、资产回报率、国际四大审计、托宾Q值、第一大股东持股比例、账面市值比、沪深A股上市公司研究常用控制变量等一系列深加工数据,基于各交易所信息披露的数据利用Stata在实现数据实时更新的同时还将不断上线更多的数据指标。我们以最前沿的数据处理技术、最好的服务质量、最大的诚意望能助力大家的研究工作!相关数据链接,请大家访问:(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或扫描二维码:


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





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

往期推文推荐

        玩转地图的好帮手--pyecharts

       爬虫俱乐部又又又输送了一位研究助理!!!      【数据分析】一文教你玩转DataFrame

 震惊,爬虫俱乐部竟是这样运营答疑群的?!

【数据分析-入门】一看就会!Numpy的创建、索引、切片与更新

带你玩转Stata编码一言不合就teamviewer

【基础篇】循环语句的continue与break

        教你用Stata爬取全国疫情风险地区数据,原来这么简单!【数据结构】集合的使用方法      Stata爬取七普人口数据

       浅析Python的序列化与反序列化

     爬虫俱乐部的精彩答疑--爬虫为何失败?

       利用Stata批量制作学生证     【数据分析-入门】科学计算基本库—Numpy的简单使用      Stata绘图系列——玩转绘图通用选项之图例     【基础篇】数据类型介绍——list、tuple和range对象

覆盖北交所的“cnstock”复工了!

高考热度大数据爬虫——谁才是院校顶流

跨框架数据操作

关于我们 


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

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



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

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

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可

以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。







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

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