SAS情节SGPLOT

时间:2018-03-30 18:03:45

标签: plot sas overlay

我有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

2 个答案:

答案 0 :(得分:1)

在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
;

答案 1 :(得分:0)

一般来说,在SGxxx procs中你只需添加更多语句即可在图表上显示更多内容。例如,您可能希望在同一图表上显示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;

enter image description here