分享

Stata二维图的坐标轴选择

 张春强2022 2018-01-18


喜大普奔~爬虫俱乐部的github主站正式上线了!我们的网站地址是:https://stata-club.,粉丝们可以通过该网站访问过去的推文哟~

在Stata中,我们经常使用graph twoway命令绘制散点图、折线图、条形图等二维图。如果我们在绘图时,需要使用多个坐标轴,这时应该怎么办呢??→_→这时就需要用到坐标轴的选项(axis_choice_options)啦!

该选项的基本语法如下:

yaxis(# [#...]), 1≤ # ≤ 9

xaxis(# [#...]), 1≤ # ≤ 9

默认(缺省)情况下,Stata指定一个纵坐标轴和一个横坐标轴,即yaxis(1)xaxis(1)。Stata最多允许在横纵两个方向各设置9个坐标轴。例如:yaxis(1 2),此时,纵轴的选择默认为先左后右,即第一个纵轴在图形左侧,第二个纵轴在图形右侧;xaxis(1 2),此时,横轴的选择默认为先下后上,即第一个横轴在图形下侧,第二个横轴在图形上侧;当设置的纵坐标轴(横坐标轴)不少于3个时,坐标轴会摆放在二维图的左侧(下侧),我们也可以通过命令来改变坐标轴的位置。

另外,为了使绘制的图形更美观,我们还可以通过绘图的其它选项来设置指定坐标轴的标题、标签、刻度和取值范围,更改图形或文字的位置、颜色、形状、大小等。更多关于坐标轴的详尽用法,请读者使用Stata中的help文件来进一步学习(help axis_choice_options)。

接下来,我们通过构造一个简单的数据集来介绍这一选项的使用方法。在绘图之前,我们先构造一个数据集,生成绘图所用的变量。

clear

set obs 55

set seed 123456789

gen time = _n

format time %td //日数据

gen week = week(time) //周标识

gen AR = ln(1+runiform()) //超额收益率(日)

sort time

gen CAR = sum(AR) //累计超额收益率(日)

bysort week: egen meanAR = mean(AR) //平均超额收益率(周)

gen meanp_AR = meanAR/meanAR[_n-1] - 1 //平均超额收益率变动率(周)

首先,我们使用单个y轴生成AR和CAR的折线图。当只有1个y轴时,选项yaxis(1)可以省略,x轴同理。

twoway (line CAR time, lwidth(medthick)) (line AR time, lwidth(medthick)) //使用一个y轴 

我们发现,当AR和CAR 使用同一y轴时,由于AR的取值范围远小于CAR,因此AR的变化在图中并不明显。

接下来,我们使用选项yaxis(n)设置双y轴,生成AR和CAR的折线图。其中,yaxis(1)指AR变量使用第一个y轴,yaxis(2)指CAR变量使用第二个y轴,第一个坐标轴选项yaxis(1)可以省略[l1] ,Stata最多允许在同一方向设置9个坐标轴。

twoway (line AR time,yaxis(1) lcolor(ebblue)) (line CAR time,yaxis(2) lcolor(cranberry)) //双y轴

此时,我们能明显看出AR和CAR的变化趋势。AR是日超额收益率,变化幅度较大;CAR是累计超额收益率,呈上升趋势。

我们可以使用yaxis(n)xaxis(n)选项设置2个y轴和2个x轴,生成AR的散点图、CAR的折线图和meanAR的条形图。此时,由于变量取值范围不同,AR和meanAR可以使用第一个y轴(0-0.8),CAR使用第二个y轴(0-25);由于时间单位的不同,AR和CAR可以使用第一个x轴(日),meanAR使用第二个x轴(周)。为了输出结果美观,我们使用对图形的颜色、宽度、大小等进行了调整,这些调整可以通过命令选项写出,也可以直接在生成的图形中修改。

twoway (bar meanAR week, xaxis(1) yaxis(1) color(ltblue) barw(0.6) xlabel(1(1)8)) (scatter AR time, c(l) ytitle(AR) xaxis(2) yaxis(1) mcolor(teal) msize(small) lcolor(teal)) (line CAR time, xaxis(2) yaxis(2) color(teal) lwidth(medthick)) //双x轴双y轴

生成AR和CAR的折线图,meanp_AR的条形图。此时,由于变量取值范围各不相同,AR, CAR和meanp_AR需要分别使用一个y轴;由于时间单位的不同,meanp_AR使用第一个x轴(周),CAR和AR使用第二个x轴(日)

twoway (bar meanp_AR week, xaxis(1) yaxis(1) barw(0.5) color(ltblue) xlabel(1(1)8, axis(1))) (line AR time, xaxis(2) yaxis(2) lcolor(teal)) (line CAR time,xaxis(2) yaxis(3) lcolor(teal)) //双x轴三y轴

此时,我们发现,在Stata绘图中,当设置的纵坐标轴(横坐标轴)不少于3个时,纵坐标轴(横坐标轴)会堆积在图形左侧(下侧)。如果小伙伴们想要自行选择坐标轴出现的位置,可以使用选项yscale(alt)xscale(alt),将指定的坐标轴移到另一侧。

例如,我们希望把条形图的纵轴移到右侧显示,使图形更加美观,我们可以使用yscale(alt)选项实现这一操作,命令如下:

twoway (bar meanp_AR week,xaxis(1) yaxis(1) yscale(alt) barw(0.5) color(ltblue) xlabel(1(1)8, axis(1))) (line AR time, xaxis(2) yaxis(2) lcolor(teal)) (line CAR time,xaxis(2) yaxis(3) lcolor(teal))  

此时,我们使用yscale(alt)选项将条形图的纵轴移到右侧显示,并使用yline(0)选项为条形图增加了一条y=0的水平参考线,增加了图形的可读性。

通过上述坐标轴选择例子的演示,小伙伴们有没有些许收获呢??和爬虫君一起,关注Stata学习中的每一个小细节,相信你也可以成为Stata砖家哦(o^_^o)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约