Hi all,
I have a bar graph with a 6-level categorical variable (SLNLOS) and the investigator wants three of the bars to be one color and three bars to be another color. I'm not great at template modification and I can't think of how I would change the color of three levels of the variable since it's rather arbitrary.
It may be pertinent that it has to be a 600 DPI .tiff per the journal requirements.
Code:
ods listing image_dpi=600;
ods graphics on/ imagefmt=tiff imagename="Final Figure 2";
proc sgplot data=long;
vbar slnlos/response=inp stat=mean;
run;
Thanks!
Meredith
Hi Meredith,
I believe you will need to "assign" a group to inp variable, such that if inp is one of the three bars value then grp = 1, else grp = 0;
then you could use this code:
proc template;
define statgraph my_design;
begingraph;
layout lattice / rowdatarange=data columndatarange=data rowgutter=10 columngutter=10;
layout overlay;
barchart x=slnlos y=inp/ group=GRP name='bar' clusterwidth=1.0;
endlayout;
endlayout;
endgraph;
end;
run;
proc sgrender data=WORK.long template=my_design;
run;
Does this make sense?
Hi Meredith,
I believe you will need to "assign" a group to inp variable, such that if inp is one of the three bars value then grp = 1, else grp = 0;
then you could use this code:
proc template;
define statgraph my_design;
begingraph;
layout lattice / rowdatarange=data columndatarange=data rowgutter=10 columngutter=10;
layout overlay;
barchart x=slnlos y=inp/ group=GRP name='bar' clusterwidth=1.0;
endlayout;
endlayout;
endgraph;
end;
run;
proc sgrender data=WORK.long template=my_design;
run;
Does this make sense?
Awesome, thank you! I really need to sit down and spend some time figuring out template modification... ugh...
You can do this with proc SGPLOT too:
vbar slnlos / response=inp stat=mean group=grp;
If you have SAS 9.3, you can use the DATTRMAP to do this. Set GRP=slnlos, and then defining an attribues map with specific colors for each category value. See: Attribute Maps – 1 - Graphically Speaking
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.