07-24-2014 10:29 PM
I am trying to barchart using proc sgrender. My dataset has variable called ID with 2 different values for time ,group and reasons. To plot data points correctly I formatted ID in such a way that it has values _n_ according to the data.
ID TIME group id_ reasons length stat statvar
1 5 A 1 xxx 6 35 age
1 6 B 2 yyy 7 asian ethinic
I calculated length variable from time so that that graph plot value just above the bar . length = time+1;
I want to create bar chart in such a way that group A and B gets different colors for the corresponding ID and there shouldn't be any space between bars. The code I used is
define statgraph barcolors;
dynamic xvar yvar;
discreattrmaps attrvars=group var=group attrmap='catcolors';
barchartparam x = id_ y = time/primary=yes groups = group groupdisplay = cluster name='colors'
scatterplot x =id_ y = length/markerattrs=(size=5 weight=bold)group=reasons;
The problem I have is since id_ has different value for same ID , it create a space between bars. If I use ID instead of id_ in scatterplot then all the reasons goes to first bar not to corresponding bar. How can I tell SAS not to put space between bars for each ID?
I am also trying to put a table under graph. since there are 2 bars for each ID, graph is having trouble to put values under each ID in the table. Is there any solution for this too?
boxplot x= id_ y = stat/class=varstat;
07-25-2014 11:28 AM
Without examples of your data it is a bit difficult to make complete suggestions.
I would recommend visiting
or http://robslink.com/SAS/ and see if you find something that looks like what you want to do and examine that code.
07-25-2014 02:03 PM
Thanks! I used the code from the following PROC_SGRENDER.html
It worked fine . Another question I have is when I use scatter plot over barchart to put points on the top of each bar, symbols goes to corner of bar instead of middle of each bar if there are 2 bars per ID. If there is only one bar per id then the symbol goes to the center of bar
ID TIME group id_ reasons length
1 5 A 1 xxx 6
1 6 B 2 yyy 7
SCATTERPLOT X = ID Y =LENGTH/group = reasons markerattrs(size = 2 weight=bold)
Is there anyway to tell SAS to put symbols in the center of each bars?
07-25-2014 03:44 PM
You might try MARKERCHARACTER with a symbol font set using MARKERCHARACTERATTRS as the online help says this centers strings. If A B etc are acceptable for symbols it should work fine instead fo markerattrs.
07-25-2014 11:35 AM
Why can't you use proc SGPLOT with VBAR with GroupDisplay=Cluster and Data Label?
You can use BarWidth=1 to not get spaces between bars. If you attach your full program with data, it is easier to help.