BookmarkSubscribeRSS Feed
Lapis Lazuli | Level 10

## How to Order SGPlot or Display values of a Different Variable on x-axis

I have a dataset with summary statistics (OR and Confidence Intervals) for a number of centers.  I would like to plot these in an increasing order on the x-axis.  SCATTER does not respect discereorder=data and orders the x-axis by x-variable.  Discrete x-axis routines (VLine, etc.) do not offer a way to display the confidence interval.  So far the best I can do is to suppress the display of x-axis values and use MARKERCHAR to get the values of the center variable.  However, it get the centers inside the figure.

Any suggestions?

data c;

do TID=1 to 10;

OR = exp(rannor(0));

SE = ranuni(0);

Lower = exp(log(OR)-1.96*SE);

Upper = exp(log(OR)+1.96*SE);

L = -1;

output;

end;

proc sort data=c; by OR;

quit;

proc sgplot data=c;

refline 1;

scatter x=TID y=OR / yerrorlower=Lower yerrorupper=Upper;

xaxis type=discrete discreteorder=data; /* values are displayed in an increasing order of TID */

proc sgplot data=c noautolegend;

refline 1;

scatter x=OR y=OR / yerrorlower=Lower yerrorupper=Upper;

scatter x=OR y=L / markerchar=TID;

xaxis type=discrete display=(novalues) label='TID';

quit;

The second plot gets me close to what I want but I suspect that there has to be a way use a different variable to display values of the x-axis.

1 REPLY 1
Lapis Lazuli | Level 10

## Re: How to Order SGPlot or Display values of a Different Variable on x-axis

I ended up calculating a rank variable for the x-axis and creating a format for the ranks that contain the values of the third variables for the ranks.

Discussion stats
• 1 reply
• 961 views
• 0 likes
• 1 in conversation