BookmarkSubscribeRSS Feed
Kanyange
Fluorite | Level 6

Hi All

I am interested in plotting graphs using same scale! The below code plots two series using overlay however each series is given a different scale on Y1 and Y2 axis. Please can you help  on how we modify the code to have both series of data on the same scale?

Context:

I need to make sure the p-scores (probabilities) reflect actual response rates in our campaign history. These plots help us with that activity. Many Thanks

Here is the code...

%_eg_conditional_dropds(WORK.SORTTempTableSorted);

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

   Sort data set WORK.LIFT2

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

PROC SORT

       DATA=WORK.LIFT2(KEEP=decile resprate mean_score)

       OUT=WORK.SORTTempTableSorted

       ;

       BY decile;

RUN;

SYMBOL1

       INTERPOL=JOIN

       HEIGHT=10pt

       VALUE=NONE

       LINE=1

       WIDTH=2

       CV = _STYLE_

;

SYMBOL2

       INTERPOL=JOIN

       HEIGHT=10pt

       VALUE=NONE

       LINE=1

       WIDTH=2

       CV = _STYLE_

;

Legend1

       FRAME

       ;

Axis1

       STYLE=1

       WIDTH=1

       MINOR=NONE

;

Axis2

       STYLE=1

       WIDTH=1

       MINOR=NONE

;

Axis3

       STYLE=1

       WIDTH=1

       MINOR=NONE

       LABEL=NONE

;

TITLE;

TITLE1 "Line Plot";

FOOTNOTE;

FOOTNOTE1 "Generated by the SAS System (&_SASSERVERNAME, &SYSSCPL) on %TRIM(%QSYSFUNC(DATE(), NLDATE20.)) at %TRIM(%SYSFUNC(TIME(), TIMEAMPM12.))";

PROC GPLOT DATA = WORK.SORTTempTableSorted

;

PLOT resprate * decile  /

OVERLAY

       VAXIS=AXIS1

       HAXIS=AXIS2

       HREVERSE

FRAME  LEGEND=LEGEND1

;

PLOT2 mean_score * decile  = 2  /

OVERLAY

       VAXIS=AXIS1

OVERLAY

       LEGEND=LEGEND1

;

run; quit;

2 REPLIES 2
GraphGuy
Meteorite | Level 14

By default, the gplot axes auto-scale to fit the data ... if you plot slightly different data, the auto-scale axes will be slightly different.

Since you want the axes to be exactly the same, you can hard-code the range of the axes, rather than letting them auto-scale.  Since you use axis1 for both the left & right axes, you will only need to hard-code it in the axis1 statement.  Something like ...

axis1 order=(0 to 100 by 20) ...

Kanyange
Fluorite | Level 6

Thank You Robert...

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
  • 2 replies
  • 1792 views
  • 0 likes
  • 2 in conversation