Stata二维图的坐标轴选择
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Stata二维图的坐标轴选择相关的知识,希望对你有一定的参考价值。
Stata二维图的坐标轴选择在Stata中,我们经常使用graph twoway命令绘制散点图、折线图、条形图等二维图。如果我们在绘图时,需要使用多个
参考技术A 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[_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的水平参考线,增加了图形的可读性。
C语言,二维点按照x坐标大小排序题。
题目输入包含一组二维坐标,要求对坐标按照 x 从小到大排序,如果两个点的 x 坐标相同,那么就按照点的 y 坐标从小到大排序。比如给定三个点(3,2),(1,2),(1,1)那么排序后的顺序应为(1,1),(1,2),(3,2)。坐标的数值均为整数。
输入要求:
题目包含多组测试数据。
首先会输入一个正整数n,表示有n组测试用例
对于每组测试用力,会输入一个正整数m,表示需要排序的点的数量。
之后是m行,每行包括两个整数,分别表示点的x坐标和y坐标
(如:
1
3
3 2
1 3
1 1
)
输出要求:
输出排序后点的坐标。
每行包括两个用空格分隔的整数,分别是点的x坐标和点的y坐标
typedef struct Point
int x;
int y;
Po;
void Sort(Po P[], int m)
int i,j;
int tx,ty;
int flag;
for(i=m-1;i>0;i--)
flag=0;
for(j=0;j<=i-1;j++)
if(P[j].x>P[j+1].x)
tx=P[j].x; ty=P[j].y;
P[j].x=P[j+1].x; P[j].y=P[j+1].y;
P[j+1].x=tx; P[j+1].y=ty;
flag=1;
else if(P[j].x==P[j+1].x&&P[j].y>P[j+1].y)
tx=P[j].x; ty=P[j].y;
P[j].x=P[j+1].x; P[j].y=P[j+1].y;
P[j+1].x=tx; P[j+1].y=ty;
flag=1;
if(flag==0)break;
printf("The result is :\n");
for(i=0;i<m;i++)
printf("%d %d\n",P[i].x,P[i].y);
printf("\n\n");
main()
Po P[5];
int i;
int n,m;
scanf("%d",&n);
while(n!=0)
scanf("%d",&m);
for(i=0;i<m;i++)
scanf("%d%d",&P[i].x,&P[i].y);
Sort(P,m);
n--;
getch();
本回答被提问者采纳
以上是关于Stata二维图的坐标轴选择的主要内容,如果未能解决你的问题,请参考以下文章