在SAS EG中如何绘制多条线(重叠图)

时间:2016-11-04 20:37:29

标签: sas

对于下面给出的数据,我想根据以下条件在SAS EG中制作不同的图表。

  1. X&线的图表当POS =' L' (即1月1日的POS' L'以及1月31日另一行的线路图)

  2. 同样是X&的不同线图。 Y其中POS =' R'

  3. 这是数据......

    data have;
    infile cards expandtabs truncover;
    input MeasNo    X   Y   Date : date9. Ano   POS $;
    cards;
     MeasNo X   Y   Date    Ano POS
     1  10  2   01JAN16 1   L
     2  11  4   01JAN16 1   L
     3  12  3   01JAN16 1   L
     4  13  5   01JAN16 1   L
     5  14  6   01JAN16 1   L
     6  15  3   01JAN16 1   L
     7  16  4   01JAN16 1   L
     8  17  7   01JAN16 1   L
     9  18  8   01JAN16 1   L
     10 19  4   01JAN16 1   L
     11 20  6   01JAN16 1   L
     12 21  3   01JAN16 1   L
     13 22  2   01JAN16 1   L
     14 23  7   01JAN16 1   L
     15 24  9   01JAN16 1   L
     16 25  6   01JAN16 1   L
     17 26  5   01JAN16 1   L     
     18 27  4   01JAN16 1   L
     19 28  3   01JAN16 1   L
     20 29  5   01JAN16 1   L
     21 30  4   01JAN16 1   L
     22 31  7   01JAN16 1   L
     23 32  8   01JAN16 1   L
     24 33  7   01JAN16 1   L
     25 34  9   01JAN16 1   L
     26 35  8   01JAN16 1   L
     27 36  6   01JAN16 1   L
     28 37  7   01JAN16 1   L
     29 38  5   01JAN16 1   L
     30 39  4   01JAN16 1   L
     1  10  4   01JAN16 1   R
     2  11  6   01JAN16 1   R
     3  12  5   01JAN16 1   R
     4  13  7   01JAN16 1   R
     5  14  8   01JAN16 1   R
     6  15  5   01JAN16 1   R
     7  16  6   01JAN16 1   R
     8  17  9   01JAN16 1   R
     9  18  10  01JAN16 1   R
     10 19  6   01JAN16 1   R
     11 20  8   01JAN16 1   R
     12 21  5   01JAN16 1   R
     13 22  4   01JAN16 1   R
     14 23  9   01JAN16 1   R
     15 24  11  01JAN16 1   R
     16 25  8   01JAN16 1   R
     17 26  7   01JAN16 1   R
     18 27  6   01JAN16 1   R
     19 28  5   01JAN16 1   R
     20 29  7   01JAN16 1   R
     21 30  6   01JAN16 1   R
     22 31  9   01JAN16 1   R
     23 32  10  01JAN16 1   R
     24 33  9   01JAN16 1   R
     25 34  11  01JAN16 1   R
     26 35  10  01JAN16 1   R
     27 36  8   01JAN16 1   R
     28 37  9   01JAN16 1   R
     29 38  7   01JAN16 1   R
     30 39  6   01JAN16 1   R
     1  10  1   31JAN16 1   L
     2  11  3   31JAN16 1   L
     3  12  2   31JAN16 1   L
     4  13  4   31JAN16 1   L
     5  14  5   31JAN16 1   L
     6  15  2   31JAN16 1   L
     7  16  3   31JAN16 1   L
     8  17  6   31JAN16 1   L
     9  18  7   31JAN16 1   L
     10 19  3   31JAN16 1   L
     11 20  5   31JAN16 1   L
     12 21  2   31JAN16 1   L
     13 22  1   31JAN16 1   L
     14 23  6   31JAN16 1   L
     15 24  8   31JAN16 1   L
     16 25  5   31JAN16 1   L
     17 26  4   31JAN16 1   L
     18 27  3   31JAN16 1   L
     19 28  2   31JAN16 1   L
     20 29  4   31JAN16 1   L
     21 30  3   31JAN16 1   L
     22 31  6   31JAN16 1   L
     23 32  7   31JAN16 1   L
     24 33  6   31JAN16 1   L
     25 34  8   31JAN16 1   L
     26 35  7   31JAN16 1   L
     27 36  5   31JAN16 1   L
     28 37  6   31JAN16 1   L
     29 38  4   31JAN16 1   L
     30 39  3   31JAN16 1   L
     1  10  4   31JAN16 1   R
     2  11  6   31JAN16 1   R
     3  12  5   31JAN16 1   R
     4  13  7   31JAN16 1   R
     5  14  8   31JAN16 1   R
     6  15  5   31JAN16 1   R
     7  16  6   31JAN16 1   R
     8  17  9   31JAN16 1   R
     9  18  10  31JAN16 1   R
     10 19  6   31JAN16 1   R
     11 20  8   31JAN16 1   R
     12 21  5   31JAN16 1   R
     13 22  4   31JAN16 1   R
     14 23  9   31JAN16 1   R
     15 24  11  31JAN16 1   R
     16 25  8   31JAN16 1   R
     17 26  7   31JAN16 1   R
     18 27  6   31JAN16 1   R
     19 28  5   31JAN16 1   R
     20 29  7   31JAN16 1   R
     21 30  6   31JAN16 1   R
     22 31  9   31JAN16 1   R
     23 32  10  31JAN16 1   R
     24 33  9   31JAN16 1   R
     25 34  11  31JAN16 1   R
     26 35  10  31JAN16 1   R
     27 36  8   31JAN16 1   R
     28 37  9   31JAN16 1   R
     29 38  7   31JAN16 1   R
     30 39  6   31JAN16 1   R
    
    ;
    run;
    data want;
    merge have(where=(date='01JAN16'd) rename=(x=x1 y=y1))
       have(where=(date='31JAN16'd) rename=(x=x2 y=y2));
    proc sgplot data=want nocycleattrs;
    series x=x1 y=y1/group=pos;
    series x=x2 y=y2/group=pos;  
    run;
    

    我试过这样的事情,但我没有得到不同的情节。

    附上样本结果(从excel获得)。

    enter image description here

    <div class="container">
    <div id="myCarousel" class="carousel slide" data-ride="carousel">
    <!-- Indicators -->
    <ol class="carousel-indicators">
      <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
      <li data-target="#myCarousel" data-slide-to="1"></li>
      <li data-target="#myCarousel" data-slide-to="2"></li>
      <li data-target="#myCarousel" data-slide-to="3"></li>
    </ol>
    
    <!-- Wrapper for slides -->
    <div class="carousel-inner" role="listbox">
      <div class="item active">
        <img src="{{media url="wysiwyg/FB_banner2.jpg"}}" alt="Chania" width="100%" height="345">
      </div>
    
      <div class="item">
        <img src="{{media url="wysiwyg/FB_banner_1.jpg"}}" alt="Chania" width="100%" height="345">
      </div>
    
      <div class="item">
        <img src="{{media url="wysiwyg/FB_banner_8.jpg"}}" alt="Flower" width="100%" height="345">
      </div>
    
      <div class="item">
        <img src="{{media url="wysiwyg/FB_banner_12.jpg"}}" alt="Flower" width="100%" height="345">
      </div>
    </div>
    
    <!-- Left and right controls -->
    <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
      <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
      <span class="sr-only">Previous</span>
    </a>
    <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
      <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
      <span class="sr-only">Next</span>
    </a>
    

    有什么建议吗?

2 个答案:

答案 0 :(得分:2)

你或多或少都有向后的GROUP。 GROUP告诉它要做两行。使用BY代替用x1 / x2做的,也可以得到两个图。

proc sort data=have;
by pos date;
run;

proc sgplot data=have nocycleattrs;
by pos;
series x=x y=y/group=date;
format date date9.;
run;

这样做你想要的吗? (POS = R是正确的我相信,但你的数据在两个日期看起来相同,所以它完全过度绘制; POS = L看起来就像你要求的那样。)

答案 1 :(得分:0)

由于我阅读了您的要求,并且我尝试了上面的Joe的回答,我觉得有点修改这个答案来回答您的问题:

proc sort data=have;
by pos date;
run;

proc sgplot data=have nocycleattrs;
by pos;
series X=X1 Y=Y1 / group=date;
series X=X2 Y=Y2 / group=date;
format date date9.;
run;

可选地,

proc sgpanel data=have; 
panelby pos; 
series x=x y=y/group=date break; 
run;

检查两个答案,看看这些是否有帮助。