Desktop productivity for business analysts and programmers

How to plot lines overlapping each other (i.e. one line on top of other)

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 87
Accepted Solution

How to plot lines overlapping each other (i.e. one line on top of other)

Suppose below is the data for which I want to make a plot in SAS EG but with conditions that..

1. An over lapping plots of X and 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 and Y when POS='R'

 

MeasNoXYDateAnoPOS
110201JAN161L
211401JAN161L
312301JAN161L
413501JAN161L
514601JAN161L
615301JAN161L
716401JAN161L
817701JAN161L
918801JAN161L
1019401JAN161L
1120601JAN161L
1221301JAN161L
1322201JAN161L
1423701JAN161L
1524901JAN161L
1625601JAN161L
1726501JAN161L
1827401JAN161L
1928301JAN161L
2029501JAN161L
2130401JAN161L
2231701JAN161L
2332801JAN161L
2433701JAN161L
2534901JAN161L
2635801JAN161L
2736601JAN161L
2837701JAN161L
2938501JAN161L
3039401JAN161L
110401JAN161R
211601JAN161R
312501JAN161R
413701JAN161R
514801JAN161R
615501JAN161R
716601JAN161R
817901JAN161R
9181001JAN161R
1019601JAN161R
1120801JAN161R
1221501JAN161R
1322401JAN161R
1423901JAN161R
15241101JAN161R
1625801JAN161R
1726701JAN161R
1827601JAN161R
1928501JAN161R
2029701JAN161R
2130601JAN161R
2231901JAN161R
23321001JAN161R
2433901JAN161R
25341101JAN161R
26351001JAN161R
2736801JAN161R
2837901JAN161R
2938701JAN161R
3039601JAN161R
110131JAN161L
211331JAN161L
312231JAN161L
413431JAN161L
514531JAN161L
615231JAN161L
716331JAN161L
817631JAN161L
918731JAN161L
1019331JAN161L
1120531JAN161L
1221231JAN161L
1322131JAN161L
1423631JAN161L
1524831JAN161L
1625531JAN161L
1726431JAN161L
1827331JAN161L
1928231JAN161L
2029431JAN161L
2130331JAN161L
2231631JAN161L
2332731JAN161L
2433631JAN161L
2534831JAN161L
2635731JAN161L
2736531JAN161L
2837631JAN161L
2938431JAN161L
3039331JAN161L
110431JAN161R
211631JAN161R
312531JAN161R
413731JAN161R
514831JAN161R
615531JAN161R
716631JAN161R
817931JAN161R
9181031JAN161R
1019631JAN161R
1120831JAN161R
1221531JAN161R
1322431JAN161R
1423931JAN161R
15241131JAN161R
1625831JAN161R
1726731JAN161R
1827631JAN161R
1928531JAN161R
2029731JAN161R
2130631JAN161R
2231931JAN161R
23321031JAN161R
2433931JAN161R
25341131JAN161R
26351031JAN161R
2736831JAN161R
2837931JAN161R
2938731JAN161R
3039631JAN161R

 

Sample plot (drawn using excel) is attached for POS=L data.


lines.png

Accepted Solutions
Solution
‎11-08-2016 04:19 AM
Super User
Posts: 9,856

Re: How to plot lines overlapping each other (i.e. one line on top of other)

So you want two plots.Better post it at ODS Graphic forum .

data have;
infile cards expandtabs truncover;
input MeasNo	X	Y	Date : date9. Ano	POS $;
format date date9.;
cards;
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;
proc sgpanel  data=have;
panelby pos;
series x=x y=y/group=date break;
run;

View solution in original post


All Replies
Super User
Posts: 9,856

Re: How to plot lines overlapping each other (i.e. one line on top of other)

change data structure.

 

data have;
infile cards expandtabs truncover;
input MeasNo	X	Y	Date : date9. Ano	POS $;
cards;
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;
Frequent Contributor
Posts: 87

Re: How to plot lines overlapping each other (i.e. one line on top of other)

wonderful.. easy and working.

 

I am new to SAS but have started loving it a lot.

 

Thanks to everyone and community.

Frequent Contributor
Posts: 87

Re: How to plot lines overlapping each other (i.e. one line on top of other)

[ Edited ]

Although, it is veyr nice try, I noticed that the output did not meet the below requirements:

 

1. There should have been two plots - one for POS=L and another for POS=R

2. Also each chart should have only two lines (one for Jan 01st and another for Jan 31st)

 

Smiley Sad

 

Another issue here. I got the following warning message in the results, what could be the reason:

 

NOTE: Marker and line antialiasing has been disabled because the threshold has been reached. You can set ANTIALIASMAX=2300 in the  ODS GRAPHICS statement to restore antialiasing.
WARNING: X=X1 is invalid. The option expects at least one non-missing value in the column.
NOTE: There were 2285 observations read from the data set WORK.OVERLAY_PLOTS.

Solution
‎11-08-2016 04:19 AM
Super User
Posts: 9,856

Re: How to plot lines overlapping each other (i.e. one line on top of other)

So you want two plots.Better post it at ODS Graphic forum .

data have;
infile cards expandtabs truncover;
input MeasNo	X	Y	Date : date9. Ano	POS $;
format date date9.;
cards;
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;
proc sgpanel  data=have;
panelby pos;
series x=x y=y/group=date break;
run;

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 4 replies
  • 236 views
  • 1 like
  • 2 in conversation