Data visualization with SAS programming

How to add marker on a two curve outlay on bar chart?

Reply
Contributor
Posts: 74

How to add marker on a two curve outlay on bar chart?

 

Hello,

 

I have the code below showing a two curve outlay on bar chart, but I need some changes. First, how to add a vertial line on the right side of the graph corresponding to the vertical line on the left side that shows the percentage ranging  0% to 100%. Second, for the final graph, how to add a small box filled with a small piece of bar shape and  colored corresponding to the bar color? also,  to add a small box filled with a small piece of line shape and  colored corresponding to the line? The small boxes should be  placed  ahead of d_2015, d_2016, d_2015_2, d_2016_2 , so that the readers would understand by first sight, that the bars are for d_2015, d_2016 and the lines are for d_2015_2, d_2016_2. Thank you so much! 

 

data ds1;

input year $ mid $ resp1 resp2;

mid2=cat(strip(mid), "_2");

datalines;

null d_2016 0.45 0.64

null d_2015 0.35 0.783

s_300 d_2016 0.65 0.67

s_300 d_2015 0.55 0.75

s_640 d_2016 0.42 0.89

s_640 d_2015 0.65 0.87

s_670 d_2016 0.35 0.12

s_670 d_2015 0.75 0.09

s_700 d_2016 0.83 0.06

s_700 d_2015 0.47 0.07

s_730 d_2016 0.48 0.18

s_730 d_2015 0.58 0.21

s_760 d_2016 0.67 0.05

s_760 d_2015 0.69 0.045

;

run;

/*--Define Attr Map for groups--*/

data attrmap;

length value FillColor LineColor TextColor $12;

Id='X'; Value="d_2015"; FillStyleElement='graphdata1'; LineStyleElement='graphdata1'; TextStyleElement='graphdata1';output;

Id='X'; Value="d_2016"; FillStyleElement='graphdata2'; LineStyleElement='graphdata2'; TextStyleElement='graphdata2';output;

Id='X'; Value="d_2015_2"; FillStyleElement='graphdata3'; LineStyleElement='graphdata3'; TextStyleElement='graphdata3';output;

Id='X'; Value="d_2016_2"; FillStyleElement='graphdata4'; LineStyleElement='graphdata4'; TextStyleElement='graphdata4';output;

run;

ods listing gpath='.' image_dpi=200;

ods graphics / reset attrpriority=color width=5in height=3in imagename='Goodgraph';

title 'Score Distribution';

proc sgplot data=ds1 noborder noautolegend cycleattrs dattrmap=attrmap;

vbarparm category=year response=resp1 / group=mid groupdisplay=cluster

outlineattrs=(color=black) barwidth=0.8 attrid=X;

series x=year y=resp2 / group=mid2 smoothconnect attrid=X

lineattrs=(thickness=3);

xaxistable resp1 / class=mid colorgroup=mid attrid=X;

xaxistable resp2 / class=mid2 colorgroup=mid2 attrid=X;

xaxis display=(nolabel) label="Year";

yaxis offsetmin=0 label="Rate" tickvalueformat= percent7.0;

run;

Contributor
Posts: 74

How to add marker on a two curve outlay on bar chart?

 

Hello,

 

I have the code below showing a two curve outlay on bar chart, but I need some changes. First, how to add a vertial line on the right side of the graph corresponding to the vertical line on the left side that shows the percentage ranging  0% to 100%. Second, for the final graph, how to add a small box filled with a small piece of bar shape and  colored corresponding to the bar color? also,  to add a small box filled with a small piece of line shape and  colored corresponding to the line? The small boxes should be  placed  ahead of d_2015, d_2016, d_2015_2, d_2016_2 , so that the readers would understand by first sight, that the bars are for d_2015, d_2016 and the lines are for d_2015_2, d_2016_2. Thank you so much! 

 

 

data ds1;

input year $ mid $ resp1 resp2;

mid2=cat(strip(mid), "_2");

datalines;

null d_2016 0.45 0.64

null d_2015 0.35 0.783

s_300 d_2016 0.65 0.67

s_300 d_2015 0.55 0.75

s_640 d_2016 0.42 0.89

s_640 d_2015 0.65 0.87

s_670 d_2016 0.35 0.12

s_670 d_2015 0.75 0.09

s_700 d_2016 0.83 0.06

s_700 d_2015 0.47 0.07

s_730 d_2016 0.48 0.18

s_730 d_2015 0.58 0.21

s_760 d_2016 0.67 0.05

s_760 d_2015 0.69 0.045

;

run;

/*--Define Attr Map for groups--*/

data attrmap;

length value FillColor LineColor TextColor $12;

Id='X'; Value="d_2015"; FillStyleElement='graphdata1'; LineStyleElement='graphdata1'; TextStyleElement='graphdata1';output;

Id='X'; Value="d_2016"; FillStyleElement='graphdata2'; LineStyleElement='graphdata2'; TextStyleElement='graphdata2';output;

Id='X'; Value="d_2015_2"; FillStyleElement='graphdata3'; LineStyleElement='graphdata3'; TextStyleElement='graphdata3';output;

Id='X'; Value="d_2016_2"; FillStyleElement='graphdata4'; LineStyleElement='graphdata4'; TextStyleElement='graphdata4';output;

run;

ods listing gpath='.' image_dpi=200;

ods graphics / reset attrpriority=color width=5in height=3in imagename='Goodgraph';

title 'Score Distribution';

proc sgplot data=ds1 noborder noautolegend cycleattrs dattrmap=attrmap;

vbarparm category=year response=resp1 / group=mid groupdisplay=cluster

outlineattrs=(color=black) barwidth=0.8 attrid=X;

series x=year y=resp2 / group=mid2 smoothconnect attrid=X

lineattrs=(thickness=3);

xaxistable resp1 / class=mid colorgroup=mid attrid=X;

xaxistable resp2 / class=mid2 colorgroup=mid2 attrid=X;

xaxis display=(nolabel) label="Year";

yaxis offsetmin=0 label="Rate" tickvalueformat= percent7.0;

run;

 

 

Super User
Super User
Posts: 7,720

Re: How to add marker on a two curve outlay on bar chart?

Hi,

 

For what I can make out are your two questions:

"how to add a vertial line on the right side" - check out YAXIS2 in the SAS guidance, that is the right hand axis, same as XAXIS2 for the top one.

"to add a small box filled with a small piece of line shape" - these are called legends, you can find many examples of these in the documentation, just set your legend to the graph part you need.

 

If you require further help with graphs, take a look at:

http://blogs.sas.com/content/graphicallyspeaking/

Lots of great examples on all graphs.

Ask a Question
Discussion stats
  • 2 replies
  • 152 views
  • 0 likes
  • 2 in conversation