# Forcing Exponential Axis Annotation

**QUESTION:** It seems that IDL has some kind of internal
algorithm that sometimes selects exponential axis tick labeling and
sometime selects number axis tick labeling. Can I force it to use
exponential tick labeling all of the time?

** ANSWER:** You can create tick labels any way you like
by using a special tick labeling function. The function is called
by specifying the name of the function using the **[XYZ]TickFormat**
keyword to a graphics command.

Here is a tick label function for forcing exponential axis labeling written by Stein Vidar Hagfors Haugan. Notice that the function is defined with three positional parameters. These are required for a tick formatting function.

FUNCTION Exponent, axis, index, number ; A special case. IF number EQ 0 THEN RETURN, '0' ; Assuming multiples of 10 with format. ex = String(number, Format='(e8.0)') pt = StrPos(ex, '.') first = StrMid(ex, 0, pt) sign = StrMid(ex, pt+2, 1) thisExponent = StrMid(ex, pt+3) ; Shave off leading zero in exponent WHILE StrMid(thisExponent, 0, 1) EQ '0' DO thisExponent = StrMid(thisExponent, 1) ; Fix for sign and missing zero problem. IF (Long(thisExponent) EQ 0) THEN BEGIN sign = '' thisExponent = '0' ENDIF ; Make the exponent a superscript. IF sign EQ '-' THEN BEGIN RETURN, first + 'x10!U' + sign + thisExponent + '!N' ENDIF ELSE BEGIN RETURN, first + 'x10!U' + thisExponent + '!N' ENDELSE END

To see how it works, first try this command:

IDL> Plot, [1, 1e3]

And then try it with the tick formatting function, like this:

IDL> Plot, [1, 1e3], YTickFormat='exponent'

Here is an example that shows how the Y axis labels should appear
after typing the two commands above.

Example plot with and without EXPONENT function tick formatting. |

This function can even be used with logarithmic axes, like this:

IDL> Plot, [1,1e3], YTickFormat='exponent', YLog=1

The EXPONENT function can also be used with log plots. |

Paul van Delst has written a similar tick formatting function, that he describes in this IDL Newsgroup article.

Last Updated 21 December 2007