繁体   English   中英

SAS绘图SGPLOT

[英]SAS plot SGPLOT

我有3列A,B,C。我尝试做一个覆盖图,该图显示了B的一行和C的一行(A是x轴)。 但是,当我使用下面的代码时,输​​出看起来非常丑陋。 有什么更好的方法呢? 谢谢。

proc plot data=djia;
   plot A*B='*'
        A*C='o' / overlay box;
   title 'Plot of Highs and Lows';
   title2 'for the Dow Jones Industrial Average';
run;

http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a002473570.htm

在SGPLOT中,默认情况下,绘图语句会绘图到相同的图形“画布”上,从而进行覆盖。 首先绘制第一个语句,因此您可以为叠加产生任何所需的“ z效果”。

绘制djia数据的示例。

proc sgplot data=djia;

  band x=year lower=low upper=high / fillatrrs=(color=vlig);

  series x=year y=high / markers;
  series x=year  y=low  / markers;

run;

SAS知识库文章http://support.sas.com/kb/51/821.html展示了如何在高低之间划分(填充)区域。

数据举例

* from http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a000075748.htm#a000075747 ;
data djia;
      input Year @7 HighDate date7. High @24 LowDate date7. Low;
      format highdate lowdate date7.;
      datalines;
1954  31DEC54  404.39  11JAN54  279.87
1955  30DEC55  488.40  17JAN55  388.20
1956  06APR56  521.05  23JAN56  462.35
1957  12JUL57  520.77  22OCT57  419.79
1958  31DEC58  583.65  25FEB58  436.89
1959  31DEC59  679.36  09FEB59  574.46
1960  05JAN60  685.47  25OCT60  568.05
1961  13DEC61  734.91  03JAN61  610.25
1962  03JAN62  726.01  26JUN62  535.76
1963  18DEC63  767.21  02JAN63  646.79
1964  18NOV64  891.71  02JAN64  768.08
1965  31DEC65  969.26  28JUN65  840.59
1966  09FEB66  995.15  07OCT66  744.32
1967  25SEP67  943.08  03JAN67  786.41
1968  03DEC68  985.21  21MAR68  825.13
1969  14MAY69  968.85  17DEC69  769.93
1970  29DEC70  842.00  06MAY70  631.16
1971  28APR71  950.82  23NOV71  797.97
1972  11DEC72 1036.27  26JAN72  889.15
1973  11JAN73 1051.70  05DEC73  788.31
1974  13MAR74  891.66  06DEC74  577.60
1975  15JUL75  881.81  02JAN75  632.04
1976  21SEP76 1014.79  02JAN76  858.71
1977  03JAN77  999.75  02NOV77  800.85
1978  08SEP78  907.74  28FEB78  742.12
1979  05OCT79  897.61  07NOV79  796.67
1980  20NOV80 1000.17  21APR80  759.13
1981  27APR81 1024.05  25SEP81  824.01
1982  27DEC82 1070.55  12AUG82  776.92
1983  29NOV83 1287.20  03JAN83 1027.04
1984  06JAN84 1286.64  24JUL84 1086.57
1985  16DEC85 1553.10  04JAN85 1184.96
1986  02DEC86 1955.57  22JAN86 1502.29
1987  25AUG87 2722.42  19OCT87 1738.74
1988  21OCT88 2183.50  20JAN88 1879.14
1989  09OCT89 2791.41  03JAN89 2144.64
1990  16JUL90 2999.75  11OCT90 2365.10
1991  31DEC91 3168.83  09JAN91 2470.30
1992  01JUN92 3413.21  09OCT92 3136.58
1993  29DEC93 3794.33  20JAN93 3241.95
1994  31JAN94 3978.36  04APR94 3593.35
;

通常,在SGxxx过程中,您只需添加更多语句即可使更多内容显示在图形上。 例如,您可能希望在同一张图上显示AGE * WEIGHT和AGE * HEIGHT的回归线。

proc sort data=sashelp.class out=class ;
  by age;
run;
proc sgplot data=class;
  reg x=age y=weight / legendlabel='Weight';
  reg x=age y=height / legendlabel='Height' y2axis;
run;

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM