Data visualization with SAS programming

GTL - Overlaying SCATTER over VBARPARM gives extra axis line

Accepted Solution Solved
Reply
Regular Contributor
Posts: 239
Accepted Solution

GTL - Overlaying SCATTER over VBARPARM gives extra axis line

I have the following code, with a vbarparm and a scatterplot.  If I remove the scatterplot, I get a nice graph with no extra lines; just the border around the graph.  If I uncomment the scatterplot, that works, except now I have an extra line - presumably some padding between pre-existing lines.  The bars now come from an origin line that is some distance above the box around the graph.

Is there any way to remove that line and/or padding?  I'm not entirely sure why it exists in the first place.  I do want the bars to originate from the bottom of the box line, not to originate from a nonexistent x axis line.

The general concept here is that I'm placing stat test results over the bars, and since I'm using groupdisplay=cluster I cannot use datalabel; so scatter with a position of 105 seemed most reasonable as a solution. I'd be happy to consider other solutions if there is a better way to do this.

Thanks!

data mydata;

length stub $15;

input

installation $

stub $

prop

;

top=105;

statresult=ifc(installation='Facility','†#*',' ');

datalines;

Facility Favorable 65

Facility Neutral 25

Facility Unfavorable 10

Region Favorable 75

Region Neutral 15

Region Unfavorable 10

Nation Favorable 55

Nation Neutral 25

Nation Unfavorable 20

;;;;

run;

proc template;

define statgraph mybarplot;

begingraph /;

layout overlay /

  xaxisopts=( display=( tickvalues )

  TickValueAttrs=( Size=8pt Family="Arial/Bold")

  type=discrete discreteopts=( TickValueFitPolicy=SplitRotate sortOrder=data ) )

  y2axisopts=(labelFitPolicy=Split)

  yaxisopts=( display=none labelFitPolicy=Split type=auto )

  x2axisopts=(display=none)

  y2axisopts=(labelFitPolicy=Split);

  BarChartParm X=installation Y=prop / primary=true Group=stub

  DataLabelAttrs=( Color=CX000000 Family="ARIAL" Size=8 Weight=bold ) Display=( Fill )

  barwidth=0.4 LegendLabel="Range" NAME="Facility" groupdisplay=stack

  grouporder=ascending dataskin=pressed

  ;

  scatterplot x=installation y=top / xaxis=X primary=false markercharacter= statresult;

   DiscreteLegend "Facility" / Location=Outside valign=bottom Title=" ";

endlayout;

endgraph;

end;

run;

proc sgrender data=mydata template=mybarplot;

run;


Accepted Solutions
Solution
‎10-22-2013 05:37 PM
SAS Super FREQ
Posts: 862

Re: GTL - Overlaying SCATTER over VBARPARM gives extra axis line

The bars lift up to accommodate the possibility of the scatter point plotting at the base of a bar and being clipped in half. If you do not think that will happen with you data, set OFFSETMIN=0 in your YAXISOPTS.

Hope that helps!

Dan

View solution in original post


All Replies
Solution
‎10-22-2013 05:37 PM
SAS Super FREQ
Posts: 862

Re: GTL - Overlaying SCATTER over VBARPARM gives extra axis line

The bars lift up to accommodate the possibility of the scatter point plotting at the base of a bar and being clipped in half. If you do not think that will happen with you data, set OFFSETMIN=0 in your YAXISOPTS.

Hope that helps!

Dan

Regular Contributor
Posts: 239

Re: GTL - Overlaying SCATTER over VBARPARM gives extra axis line

Thanks DanH, figured it was something like that but couldn't find the place to set the option!

Post a Question
Discussion Stats
  • 2 replies
  • 381 views
  • 0 likes
  • 2 in conversation