BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
blue_lion
Calcite | Level 5

Hi

I was trying to find an example code to draw a horizontal chart like below.

I know how to write a code if there was only series 1, but I could not find any sample code online if there were multiple series 1,2,3,...5

It would be greatly appreciated if someone can let me know a sample code so I can learn from it. Thanks!

dvt_graph_ve.gif

1 ACCEPTED SOLUTION

Accepted Solutions
Haikuo
Onyx | Level 15

  Being lazy, so if you have EG, this is the code ripped off graph task:

PROC SQL;

     CREATE VIEW WORK.SORTTempTableSorted AS

           SELECT T.Type, T.Origin

     FROM SASHELP.CARS as T

;

QUIT;

     PATTERN1 COLOR = _STYLE_;

     PATTERN2 COLOR = _STYLE_;

     PATTERN3 COLOR = _STYLE_;

     PATTERN4 COLOR = _STYLE_;

     PATTERN5 COLOR = _STYLE_;

     PATTERN6 COLOR = _STYLE_;

     PATTERN7 COLOR = _STYLE_;

     PATTERN8 COLOR = _STYLE_;

     PATTERN9 COLOR = _STYLE_;

     PATTERN10 COLOR = _STYLE_;

     PATTERN11 COLOR = _STYLE_;

     PATTERN12 COLOR = _STYLE_;

Axis1

     STYLE=1

     WIDTH=1

;

Axis2

     STYLE=1

     WIDTH=1

     MINOR=NONE

;

;

TITLE;

TITLE1 "Bar Chart";

FOOTNOTE;


PROC GCHART DATA=WORK.SORTTempTableSorted

;

     HBAR

      Type

/

     GROUP=Origin

     CLIPREF

           SPACE=0

FRAME TYPE=FREQ

     NOLEGEND

     COUTLINE=BLACK

     MAXIS=AXIS1

     RAXIS=AXIS2

PATTERNID=MIDPOINT

;

/* -------------------------------------------------------------------

End of task code.

------------------------------------------------------------------- */

RUN; QUIT;

Capture.PNG

View solution in original post

7 REPLIES 7
DanH_sas
SAS Super FREQ

What version of SAS are you running?

DanH_sas
SAS Super FREQ

Try this little example and see if it works for you:

Title "Average MPG by Origin and Vehicle Type";

proc sgplot data=sashelp.cars;

hbar origin / response=mpg_city stat=mean group=type

              groupdisplay=cluster datalabel;

run;

DanH_sas
SAS Super FREQ

If your data is not grouped, you can overlay multiple bar charts in a manner similar to the following:

proc sgplot data=sashelp.class;

hbar age / response=weight stat=mean barwidth=0.4 discreteoffset=-0.2 datalabel;

hbar age / response=height stat=mean barwidth=0.4 discreteoffset=0.2 datalabel;

run;

GraphGuy
Meteorite | Level 14

You could do it with SAS/Graph Proc Gchart...

data my_data;

length my_group $20 my_series $20;

infile datalines dlm=':';

input my_group my_series quantity;

datalines;

Group A:Series 1:42

Group A:Series 2:55

Group A:Series 3:35

Group A:Series 4:23

Group A:Series 5:25

Group B:Series 1:34

Group B:Series 2:30

Group B:Series 3:50

Group B:Series 4:45

Group B:Series 5:28

;

run;

axis1 label=none value=none;

axis2 label=none;

axis3 label=none minor=none;

legend1 label=(position=top j=c 'Legend Title') shape=bar(.15in,.15in);

proc gchart data=my_data;

hbar my_series / type=sum sumvar=quantity

group=my_group subgroup=my_series space=0

maxis=axis1 gaxis=axis2 raxis=axis3

autoref clipref cref=graydd

legend=legend1;

run;

foo.png

Haikuo
Onyx | Level 15

  Being lazy, so if you have EG, this is the code ripped off graph task:

PROC SQL;

     CREATE VIEW WORK.SORTTempTableSorted AS

           SELECT T.Type, T.Origin

     FROM SASHELP.CARS as T

;

QUIT;

     PATTERN1 COLOR = _STYLE_;

     PATTERN2 COLOR = _STYLE_;

     PATTERN3 COLOR = _STYLE_;

     PATTERN4 COLOR = _STYLE_;

     PATTERN5 COLOR = _STYLE_;

     PATTERN6 COLOR = _STYLE_;

     PATTERN7 COLOR = _STYLE_;

     PATTERN8 COLOR = _STYLE_;

     PATTERN9 COLOR = _STYLE_;

     PATTERN10 COLOR = _STYLE_;

     PATTERN11 COLOR = _STYLE_;

     PATTERN12 COLOR = _STYLE_;

Axis1

     STYLE=1

     WIDTH=1

;

Axis2

     STYLE=1

     WIDTH=1

     MINOR=NONE

;

;

TITLE;

TITLE1 "Bar Chart";

FOOTNOTE;


PROC GCHART DATA=WORK.SORTTempTableSorted

;

     HBAR

      Type

/

     GROUP=Origin

     CLIPREF

           SPACE=0

FRAME TYPE=FREQ

     NOLEGEND

     COUTLINE=BLACK

     MAXIS=AXIS1

     RAXIS=AXIS2

PATTERNID=MIDPOINT

;

/* -------------------------------------------------------------------

End of task code.

------------------------------------------------------------------- */

RUN; QUIT;

Capture.PNG

blue_lion
Calcite | Level 5

Thank you so much for all of your quick responses!! All of them are very useful. Thanks again!

Hi Hai.kuo, I was trying to understand the meaning of each lines of your code, but may I know why you have 12 lines of PATTERN statement?

I read about it in the link below, but I still wasn't sure why there had to be 12 lines of these because there are only 6 types of cars?

Thanks very much!

SAS/GRAPH(R) 9.2: Reference, Second Edition

Haikuo
Onyx | Level 15

You have Robert and Dan who are way better expert than I am regarding SAS/Graph, and way better qualified to answer your question Smiley Happy.

Like I said, I cheated, the code was machine generated from a Task in Eguide, and to be honest, this is one of the major reasons I like EG.

Haikuo

sas-innovate-2024.png

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.

 

Register now!

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
  • 7 replies
  • 1215 views
  • 7 likes
  • 4 in conversation