SAS中文论坛

标题: 请问怎样把几组数据画在同一张图上 [打印本页]

作者: shiyiming    时间: 2008-7-10 22:59
标题: 请问怎样把几组数据画在同一张图上
比如说,我有year, a, b, c四组数据,以year为横轴,a, b, c画在同一张图上便于比较,
代码怎么写呢,我不知道要用什么语句
谢谢啦
作者: shiyiming    时间: 2008-7-10 23:31
标题: Re: 请问怎样把几组数据画在同一张图上
sas帮助里面有个这方面的例子,可以参考下。
作者: shiyiming    时间: 2008-7-11 11:59
标题: Re: 请问怎样把几组数据画在同一张图上
data a;
input year a b c;
cards;
1 1 2 4
2 3 4 5
3 4 6 9
4 8 10 12
5 9 7 8
6 11 6 4
7 18 5 2
8 19 3 1
;
run;
proc gplot;
plot a*year=1  b*year=2 c*year=3 /overlay
haxis=axis1 vaxis=axis2;
symbol1 c=red i=join v="a" ;
symbol2 c=blue i=spline v="b";
symbol3 c=green i=join v="c";

axis1 label=('year') order=(1to 8 by 1);
  axis2 label=('zimu')  order=(1 to 19 by 1);

run;
quit;
作者: shiyiming    时间: 2008-7-12 18:56
标题: Re: 请问怎样把几组数据画在同一张图上
接着这个问题我继续问阿,
如何把2个内容放在图的上下2个部分呢,比如很多股票的图,上半部分是当日k线图,下半部分是成交量的图
作者: shiyiming    时间: 2008-7-12 22:29
标题: Re: 请问怎样把几组数据画在同一张图上
libname study "d:\sasdata\mydir" ;
data study.indexsh2;
     set   study.indexsh;
     value=high;  output;
     value=low;   output;
     value=close; output;
run ;
goptions  reset=global gunit=pct cback=white border
          htitle=6 htext=3 ftext=swissb colors=(back) ;
proc gplot data=study.indexsh2;
     plot     volume*date  /vaxis=axis1 hvxis=axis2;
     plot2    value*date   /vaxis=axis3 vref=0;
     symbol1  i=needle;
     symbol2  i=hiloc;
     axis1    label=('Volume') order=( 0 to 700000 by 100000) offset=(0,50) ;
     axis2    label=('Date')   order=('21dec90'd to '01jan93'd by 98) ;
     axis3    label=('Price')  order=(0 to 1500 by 100) offset=(25,0) ;
     title   'Shanghai StockIndex';
run ;
横轴一样,用两个y转轴,然后用offset调整高度,可以按照这个思路试一下。
作者: shiyiming    时间: 2008-7-13 08:44
标题: Re: 请问怎样把几组数据画在同一张图上
我学习消化一样楼上的程序
作者: shiyiming    时间: 2008-7-13 14:55
标题: Re: 请问怎样把几组数据画在同一张图上
data Shangzhenzhishu;
input date1 yymmdd10. Oppr Hipr Lopr Clpr vol;
format date1 yymmdd10.;
cards;
1990-12-19 96.05 99.98 95.79 99.98 126000
1990-12-20 104.30 104.39 99.98 104.39 19700
1990-12-21 109.07 109.13 103.73 109.13 2800
1990-12-24 113.57 114.55 109.13 114.55 3200
1990-12-25 120.09 120.25 114.55 120.25 1500
1990-12-26 125.27 125.27 120.25 125.27 10000
1990-12-27 125.27 125.28 125.27 125.28 6600
1990-12-28 126.39 126.45 125.28 126.45 10800
1990-12-31 126.56 127.61 126.48 127.61 7800
;
run;
data test;
set Shangzhenzhishu;
if Oppr<Clpr then do;
date=date1; y1=Oppr; output; /* open */
date=date1; y1=Hipr; output; /* high */
date=date1; y1=Lopr; output; /* low */
date=date1; y1=Clpr; output; /* close */
end;
if Oppr>=Clpr then do;
date=date1; y2=Oppr; output;
date=date1; y2=Hipr; output;
date=date1; y2=Lopr; output;
date=date1; y2=Clpr; output;
end;
format date yymmdd10.;
run;
goptions reset=global gunit=pct cback=white border
htitle=6 htext=3 ftext=swissb colors=(back) ;
symbol1 c=blue i=needle;
symbol2 c=red i=candle;
symbol3 c=green i=candle;
axis1 label=("Date") order=('18dec90'd to '01jan91'd by 5);
axis2 label=("Price") order=(90 to 130 by 20) offset=(30,0);
axis3 label=("Volume") order=(1400 to 126000 by 15000) offset=(0,40) ;
title1 "上证综合指数k线图";
proc gplot data=test;
plot vol*date=1/vaxis=axis3 haxis=axis1;
plot2 y1*date=2 y2*date=3 / overlay  vaxis=axis2;
run; quit;
基本上可以了,但是有些小问题如最大的那个交易量太大超过坐标轴了 <!-- s:( --><img src="{SMILIES_PATH}/icon_sad.gif" alt=":(" title="Sad" /><!-- s:( --> ,你先试一下,看一下这是哪里不对。
作者: shiyiming    时间: 2008-7-13 15:17
标题: Re: 请问怎样把几组数据画在同一张图上
data Shangzhenzhishu;
input date1 yymmdd10. Oppr Hipr Lopr Clpr vol;
format date1 yymmdd10.;
cards;
1990-12-19 96.05 99.98 95.79 99.98 126000
1990-12-20 104.30 104.39 99.98 104.39 19700
1990-12-21 109.07 109.13 103.73 109.13 2800
1990-12-24 113.57 114.55 109.13 114.55 3200
1990-12-25 120.09 120.25 114.55 120.25 1500
1990-12-26 125.27 125.27 120.25 125.27 10000
1990-12-27 125.27 125.28 125.27 125.28 6600
1990-12-28 126.39 126.45 125.28 126.45 10800
1990-12-31 126.56 127.61 126.48 127.61 7800
;
run;
data test;
set Shangzhenzhishu;
if Oppr&lt;Clpr then do;
date=date1; y1=Oppr; output; /* open */
date=date1; y1=Hipr; output; /* high */
date=date1; y1=Lopr; output; /* low */
date=date1; y1=Clpr; output; /* close */
end;
if Oppr&gt;=Clpr then do;
date=date1; y2=Oppr; output;
date=date1; y2=Hipr; output;
date=date1; y2=Lopr; output;
date=date1; y2=Clpr; output;
end;
format date yymmdd10.;
run;
goptions reset=global gunit=pct cback=white border
htitle=6 htext=3 ftext=swissb colors=(back) ;
symbol1 c=blue i=needle;
symbol2 c=red i=candle;
symbol3 c=green i=candle;
axis1 label=(&quot;Date&quot;) order=('18dec90'd to '01jan91'd by 5);
axis2 label=(&quot;Price&quot;) order=(90 to 130 by 20) offset=(30,0);
axis3 label=(&quot;Volume&quot;) order=(1400 to 20000 by 1000 2000 to 40000) offset=(0,40) ;
title1 &quot;上证综合指数k线图&quot;;
proc gplot data=test;
plot vol*date=1/vaxis=axis3 haxis=axis1;
plot2 y1*date=2 y2*date=3 / overlay  vaxis=axis2;
run; quit; <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
作者: shiyiming    时间: 2008-7-13 17:34
标题: Re: 请问怎样把几组数据画在同一张图上
这个程序简洁多了阿,不过依然有个问题,就周六周日自动增加了2个空值,好像默认时间连续,或者星期连续,不知为何,我用anno遇到同样的问题,请大家再研讨研讨阿




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2