一年你要努力了 发表于 2019-8-19 16:06:41

Stata二维图的坐标轴选择


在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 - 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)可以省略 ,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的水平参考线,增加了图形的可读性。
页: [1]
查看完整版本: Stata二维图的坐标轴选择