1 / 24

Enhancing Axis Order in SAS Graphs

Improve SAS axis ordering mechanism for GPLOT and GCHART procedures. New mathematical logics for recalculating axis order using SAS macros to generate better axis arrangement compared to default settings.

joanlopez
Download Presentation

Enhancing Axis Order in SAS Graphs

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Systematically Reordering Axis in SAS Graph Brian Shen Web: www.ppdi.com

  2. Introduction SAS default ordering for Major axis tick values is sometimes not desirable for procedures like GPLOT, GCHART, etc., as examples provided. Reordering the major axis values often takes significant amount of time for programmers,  especially for generating big number of graphs for different parameters, or for data changing on daily basis, like marketing data.

  3. SAS Default: Too Many (18) Tick Numbers

  4. SAS Default: Font Size Change causes order changed

  5. SAS Default: Tick values look strange

  6. SAS Default: Only non-negative order was generated for Data with negative values

  7. SAS Default: Plot shrinks into a line if “label =none” AXIS option is specified

  8. WARNING: ALL VALUES MISSING or out of range for ( y * x ). Check to see if VAXIS= or HAXIS= list is incorrect. SAS Default: No plot generated for missing data

  9. To resolve the issues mentioned above, new mathematical logics are presented to calculate axis order, using SAS macro languages (%ORDER). Seven major steps are included for the new ordering mechanisms. For more details, please refer to the macro. MATHEMATICAL LOGICS TO RECALCULATE AXIS ORDERING

  10. STEP 1: Get the data RANGE either from the dataset variable or by user defined MIN or MAX. • For Example: • Min = - 301, Max = 401  Range = 702; • Min = -0.001, Max = 0.0001  Range = 0.0011; • Special case for range equal to 0: • If Min = Max = 0, reset Min = - 0.5, Max = 0.5; • If Min = Max and not equal to 0, extend Min/Max to half of their absolute value on both direction. • For example, if Min=Max=50, Reset Min = 25, Max =75.

  11. STEP 2: Divide range by 10 to get interim result, called RESULT1, if RESULT1 > 1, round it to single digit. For Example: 702/10 = 70.2  RESULT1 = 70; 0.0011/10 = 0.00011 RESULT1 = 0.00011;

  12. STEP 3: Divide RESULT1 by a DIVIDER to make the new result, called RESULT2, in a range between 0 to 10, and DIVIDER [10n, n=must be integers], which must be exponents with base 10, like …, 0.01, 0.1, 1, 10, 100, …, etc. For Example: 70 / 10 = 7  RESULT2 = 7, DIVIDER = 10; 0.00011 / 0.0001 = 1.1 RESULT2 = 1.1, DIVIDER = 0.0001;

  13. STEP 4: Get the initial step, called STEP1, based on the following logics: If . < RESULT2 < =2.5, STEP1 = 2.5; If 2.5 < RESULT2 < =6.2, STEP1 = 5; If 6.2 < RESULT2 < 10, STEP1 = 10; For Example: RESULT2 = 7  STEP1 = 10 RESULT2 = 1.1  STEP1 = 2.5

  14. STEP 5: Get the STEP for axis order by multiplying STEP1 by DIVIDER by 2, i.e., STEP = STEP1*DIVIDER*2.: For Example: Step1 =10, divider= 10  STEP = 10 * 10 * 2 = 200; Step1 =2.5, divider= 0.0001  STEP = 2.5 * 0.0001 * 2 = 0.0005

  15. STEP 6: Get the LOW and HIGH value for ORDER using the following formula: LOW = Floor(MIN/STEP)*STEP HIGH = Ceil(MAX/STEP)*STEP ORDER = LOW to HIGH by STEP For Example: Min = - 301, Max = 401  ORDER= -400 TO 600 by 200 Min = 0.001, Max = 0.0001  ORDER = -0.0010 to 0.0005 by 0.0005

  16. STEP 7: If both Min and Max are non-negative or non-positive, the LOW and HIGH must both be non-negative or non-positive [Except for Min = Max = 0]. If Min and Max are in different signs, LOW and HIGH must also be in different signs.

  17. Sample Calls %order( Dsn = sashelp.cars, var = mpg_city, max = 50.7 , order_name = y_order, valuelist_name = y_tickvaluelist) This call will use Min of MPG_CITY from dataset SASHELP.CARS and max = 50.7 to calculate axis order. %order( var = -0.7, max = 50.7); This call will use Min of -0.7 and max = 50.7 to calculate axis order.

  18. Macro Variables Generated for AXIS ordering This is for GPLOT/GCHART/SGPLOT, etc. Y_ORDER: =10 to 60 by 10 Those three are designed for GTL Y_TICKVALUELIST: 10 20 30 40 50 60 VIEWMIN: 10 VIEWMAX: 60

  19. Apply results for your graph programming: For GPLOT, etc: AXIS1 Label = none order = (&y_order.) offset=(0, 3)pct; For GTL: yaxisopts=( linearopts =(viewmin = &viewmin viewmax=&viewmax tickvaluelist= (&y_tickvaluelist.)));

  20. Compared Result with SAS Default

  21. Compared Result with SAS Default

  22. Compared Result with SAS Default

  23. Compared Result with SAS Default

  24. Conclusion This macro significantly enhance SAS axis ordering mechanism, especially for procedures like GPLOT, GCHART. In generally cases, it will generate axis order better than SAS default for procedures like GPLOT/GCHART, and comparable or better than axis ordering mechanism in SAS9.3 STAT graph package and SAS9.3 GTL graph package.

More Related