BookmarkSubscribeRSS Feed
anurak
Fluorite | Level 6

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

                                                            country  xxx

                                                             xxx        yyy

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

proc template;

define statgraph barcolors;

dynamic xvar yvar;

begingraph;

discreattrmaps name='catcolors'/ignorecase=true

VALUE 'A'/FILLATTRS(COLOR=BLUE);

VALUE 'B'/FILLATTRS(COLOR=RED);

enddiscretattrmaps;

discreattrmaps attrvars=group var=group attrmap='catcolors';

layout overlay/

yaxisopts-----

xaxisopt------------

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;

4 REPLIES 4
ballardw
Super User

Without examples of your data it is a bit difficult to make complete suggestions.

I would recommend visiting
http://support.sas.com/sassamples/graphgallery/PROC_SGRENDER.html

or http://robslink.com/SAS/ and see if you find something that looks like what you want to do and examine that code.

anurak
Fluorite | Level 6

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?

ballardw
Super User

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.

Jay54
Meteorite | Level 14

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.

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 4 replies
  • 2601 views
  • 6 likes
  • 3 in conversation