BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Scooby3g
Obsidian | Level 7

Hi,

I'm new to using charts in sas. I want to have a line chart and a table below the chart. I used code from the following reference from the link: https://support.sas.com/kb/49/697.html but instead of using a bar chart. I want to use a line chart so that each value for one of the variables ("Slept") is graph.

 

Can i replace "barchart" with something else to make this into a line graph? Thanks in advance for your thoughts and suggestions.

Scooby3g_0-1614098949493.png

 

DATA Slept;
INPUT QUARTER SLEPT PERCENT C_Count;
DATALINES;
2019Q1	NA	5	6
2019Q2	NO	2	3
2019Q3	UKNOWN	6	8
2019Q4	YES	5	7
2020Q1	NA	5	6
2020Q2	NO	9	11
2020Q3	UKNOWN	5	6
2020Q4	YES	5	7
2019Q1	NA	0	
2019Q2	NO	17	
2019Q3	UKNOWN	0	
2019Q4	YES	83	
2020Q1	NA	0	
2020Q2	NO	14	
2020Q3	UKNOWN	14	
2020Q4	YES	71	
2019Q1	NA	0	
2019Q2	NO	100	
2019Q3	UKNOWN	0	
2019Q4	YES	0	
2020Q1	NA	0	
2020Q2	NO	0	
2020Q3	UKNOWN	0	
2020Q4	YES	100	
2019Q1	NA	0	
2019Q2	NO	0	
2019Q3	UKNOWN	0	
2019Q4	YES	100	
2020Q1	NA	0	
2020Q2	NO	0	
2020Q3	UKNOWN	0	
2020Q4	YES	100	
;
RUN;

proc template;
   define statgraph GRAPHY;
   begingraph;
      entrytitle 'SLEPT ';
      layout lattice / rowweights=(.65 .35);
         layout overlay;
	    barchart X=Quarter y=percent / group=SLEPT barlabel=true dataskin=gloss;
	 endlayout;
	 layout overlay / xaxisopts=(type=discrete label='Number per CY Quarter' 
                          display=(label)) walldisplay=none;
	    blockplot x=Quarter block=C_Count / class=Quarter display=(outline values label) 
                                              repeatedvalues=true;
	 endlayout;
      endlayout;
   endgraph;
   end;
run;
proc sgrender data=SLEPT template=GRAPHY;
run;
1 ACCEPTED SOLUTION

Accepted Solutions
Scooby3g
Obsidian | Level 7

Okay, i think i figured it out. The below worked for me.

@ DAN Thanks again for your help.

proc template;
   define statgraph GRAPHY;
   begingraph;
      entrytitle 'SLEPT ';
      layout lattice / rowweights=(.65 .35);
         layout overlay;
	    SERIESPLOT x=Quarter y=percent / group=SLEPT datalabel=percent 
		display =all
		lineattrs = (thickness = 3 pattern=solid) 
		markerattrs=( symbol= circlefilled size=9 color= black) datalabelattrs=percent (size=8) name='b';
		discretelegend 'b'/location=outside 
							across =4
							autoalign =auto
							exclude =(" " ".");
	 endlayout;
	 layout overlay / xaxisopts=(type=discrete label='CY Quarter' 
                          display=(label)) walldisplay=none;
	    blockplot x=Quarter block=C_Count / class=Quarter display=(outline values label) 
                                              repeatedvalues=true;
	 endlayout;
      endlayout;
   endgraph;
   end;
run;


proc sgrender data=SLEPT template=GRAPHY;
run;

 

View solution in original post

5 REPLIES 5
DanH_sas
SAS Super FREQ

GTL supports a LINECHART statement. That should do what you want.

 

Scooby3g
Obsidian | Level 7

Hi Dan, Thanks for your response. It seems to work after i replaced "barchart" with "SERIESPLOT". However, I can't seem to get the labels and keylegend to show. Any suggestions or ideas?

 

proc template;
   define statgraph GRAPHY;
   begingraph;
      entrytitle 'slept ';
      layout lattice / rowweights=(.65 .35);
         layout overlay;
	    SERIESPLOT x=Quarter y=percent / group=slept 
		lineattrs = (thickness = 3 pattern=solid) 
		markerattrs=( symbol= circlefilled size=9 color= white) datalabelattrs=(label (size=8)) name='b';
		discretelegend 'b'/location=inside
							across =1
							autoalign =auto
							exclude =(" " ".");
	 endlayout;
	 layout overlay / xaxisopts=(type=discrete label='Number per CY Quarter' 
                          display=(label)) walldisplay=none;
	    blockplot x=Quarter block=C_Count / class=Quarter display=(outline values label) 
                                              repeatedvalues=true;
	 endlayout;
      endlayout;
   endgraph;
   end;
run;


proc sgrender data=slept template=GRAPHY;
run;
DanH_sas
SAS Super FREQ

Add the following option to the SERIESPLOT to get your curve labels:

curvelabel=slept

 

Are you saying you're not getting.a legend?

Scooby3g
Obsidian | Level 7

Thanks Dan!!

I added the the suggestion but put "percent" instead of "slept" because i wanted the percentage to show. The legend appears now but not all of the labels for "Percent" appears. Below is the sas code with some changes.

Scooby3g_0-1614107799753.png

 

 

proc template;
   define statgraph GRAPHY;
   begingraph;
      entrytitle 'slept ';
      layout lattice / rowweights=(.65 .35);
         layout overlay;
	    SERIESPLOT x=Quarter y=percent / group=slept curvelabel=percent
		lineattrs = (thickness = 3 pattern=solid) 
		markerattrs=( symbol= circlefilled size=9 color= white) datalabelattrs=label (size=8)name='b';
		discretelegend 'b'/location=inside
							across =1
							autoalign =auto
							exclude =(" " ".");
	 endlayout;
	 layout overlay / xaxisopts=(type=discrete label='Number per CY Quarter' 
                          display=(label)) walldisplay=none;
	    blockplot x=Quarter block=C_Count / class=Quarter display=(outline values label) 
                                              repeatedvalues=true;
	 endlayout;
      endlayout;
   endgraph;
   end;
run;

 

Scooby3g
Obsidian | Level 7

Okay, i think i figured it out. The below worked for me.

@ DAN Thanks again for your help.

proc template;
   define statgraph GRAPHY;
   begingraph;
      entrytitle 'SLEPT ';
      layout lattice / rowweights=(.65 .35);
         layout overlay;
	    SERIESPLOT x=Quarter y=percent / group=SLEPT datalabel=percent 
		display =all
		lineattrs = (thickness = 3 pattern=solid) 
		markerattrs=( symbol= circlefilled size=9 color= black) datalabelattrs=percent (size=8) name='b';
		discretelegend 'b'/location=outside 
							across =4
							autoalign =auto
							exclude =(" " ".");
	 endlayout;
	 layout overlay / xaxisopts=(type=discrete label='CY Quarter' 
                          display=(label)) walldisplay=none;
	    blockplot x=Quarter block=C_Count / class=Quarter display=(outline values label) 
                                              repeatedvalues=true;
	 endlayout;
      endlayout;
   endgraph;
   end;
run;


proc sgrender data=SLEPT template=GRAPHY;
run;

 

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 5 replies
  • 1008 views
  • 0 likes
  • 2 in conversation