Data visualization with SAS programming

How to combine bar chart and dot plot?

Accepted Solution Solved
Reply
Contributor
Posts: 50
Accepted Solution

How to combine bar chart and dot plot?

Dear all,

How can I combine dot plot and bar chart? I've tried the following code:

data have;

     input id $1. bar dot1 dot2;

     datalines;

          a 10 8 7

          b 15 18 3

          c 5 20 1

          d -5 8 2

     ;

run;

proc sgplot data=have;

  vbar id/response=bar;

  dot id/response=dot1;

  dot id/response=dot2 ;

run;

but got an:

ERROR: All overlays must have the same orientation.

I would like to obtain something similar to the attached graph.

Thanks for help


bar_dot_excel.png

Accepted Solutions
Solution
‎06-15-2015 07:58 AM
Super Contributor
Posts: 252

Re: How to combine bar chart and dot plot?

Hello,

In SGPLOT, you can only use dotplot with horizontal categorization plot statements. In your code you are trying to overlay a vertical plot with a horizontal plot and that is why you get that error.

You can use GTL to achieve what you want. Please try this code below:

proc template;
  define statgraph barwithdot;
    begingraph;
   layout overlay;
     barchart x=id y=bar / orient = vertical;
  scatterplot x=id y=dot1 / markerattrs=(color=red symbol=squarefilled);
  scatterplot x=id y=dot2 / markerattrs=(color=green symbol=trianglefilled);
   endlayout;
endgraph;
  end;
run;

proc sgrender data = have template = barwithdot;
run;

Thank you.

View solution in original post


All Replies
Solution
‎06-15-2015 07:58 AM
Super Contributor
Posts: 252

Re: How to combine bar chart and dot plot?

Hello,

In SGPLOT, you can only use dotplot with horizontal categorization plot statements. In your code you are trying to overlay a vertical plot with a horizontal plot and that is why you get that error.

You can use GTL to achieve what you want. Please try this code below:

proc template;
  define statgraph barwithdot;
    begingraph;
   layout overlay;
     barchart x=id y=bar / orient = vertical;
  scatterplot x=id y=dot1 / markerattrs=(color=red symbol=squarefilled);
  scatterplot x=id y=dot2 / markerattrs=(color=green symbol=trianglefilled);
   endlayout;
endgraph;
  end;
run;

proc sgrender data = have template = barwithdot;
run;

Thank you.

Contributor
Posts: 50

Re: How to combine bar chart and dot plot?

Thanks a lot djrisks. It works fine.

Best

Super Contributor
Posts: 252

Re: How to combine bar chart and dot plot?

You're welcome :-)

SAS Super FREQ
Posts: 1,136

Re: How to combine bar chart and dot plot?

The SGPLOT DOT plot is horizontally oriented.  So, you could use an HBAR statement instead.

proc sgplot data=have;

  hbar id/response=bar nostatlabel;

  dot id/response=dot1 nostatlabel markerattrs=graphdata1(symbol=circlefilled size=10);

  dot id/response=dot2 nostatlabel markerattrs=graphdata2(symbol=trianglefilled size=10);

run;

Dot.png

🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

Discussion stats
  • 4 replies
  • 1253 views
  • 4 likes
  • 3 in conversation