ZeekDSA
ZeekDSA

Reputation: 86

In SAS EG How to plot multiple lines (Overlapping plots)

For data given below, I want to make different plots in SAS EG according to the conditions as follows..

  1. Line plots of X & Y when POS='L' (i.e. line plot for POS 'L' of Jan 1st and on top of it another line of Jan 31st)

  2. Similarly a different Line plot of X & Y where POS='R'

Here is the data...

 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

I tried something like this but I am not getting different plots.

A sample result (obtained from excel) is attached.

enter image description here

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;

Any suggestions please?

Upvotes: 2

Views: 1719

Answers (2)

Manoj Kumar
Manoj Kumar

Reputation: 5647

Since I read your requirements and I tried Joe's answer above, I felt to modify that answer a bit to answer your query:

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;

alternatively,

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

Check both the answers and see if these help you.

Upvotes: 0

Joe
Joe

Reputation: 63424

You have GROUP backwards, more or less. GROUP tells it to make two lines. Use BY instead of doing what you did with x1/x2, also, to get two plots.

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;

Does that do what you want? (POS=R is correct I believe, but your data looks identical on the two dates, so it's fully overplotted; POS=L looks like what you asked for.)

Upvotes: 2

Related Questions