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
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!
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.
Ready to level-up your skills? Choose your own adventure.