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


