comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: How to do polar plots with logarithmic axis in radial coordinate?
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: How to do polar plots with logarithmic axis in radial coordinate? [message #23650] Wed, 07 February 2001 06:21 Go to previous message
Paul van Delst is currently offline  Paul van Delst
Messages: 364
Registered: March 1997
Senior Member
Charlie Zender wrote:
>
> Craig Markwardt wrote:
>
>> Could you simply take the ALOG10() logarithm of the data before
>> plotting it? Easier to re-label the axis than re-invent the world...
>>
>
> This would cause the radial coordinate to be negative-valued which
> would have unpleasant results. It's possible someone could get
> this method to work but I tried without success.

I did the following:

IDL> r=10.0^(findgen(100)/20.0)
IDL> theta=findgen(100)/5.
IDL> !p.charsize=2.5
IDL> plot, alog10(r), theta, xsty=4,ysty=4,/polar
IDL> axis,0,0,xax=0,xtickformat='expticks_log'
% Compiled module: EXPTICKS_LOG.
IDL> axis,0,0,yax=0,ytickformat='expticks_log'

where the expticks_log.pro is:

FUNCTION expticks_log, axis, index, value
tickmark = '10!E' + $
STRTRIM(STRING(value,FORMAT='(f5.1)'),2) + $
'!N'
RETURN, tickmark
END

The !P.CHARSIZE was just so I could see the exponents. Is this what you are looking for?
Keep in mind that the format string for the expticks_log.pro won't work for exponents less
than 0.0 - you'll have to get smart about checking for the range and then setting the
format string based on that (rather than the f5.1 above, e.g.:

CASE 1 OF

; -- Exponent is less than zero ->
; -- fractional ticklabel
( exponent LT 0 ): format = '( f' + $
STRTRIM(ABS(exponent)+2,2) + $
'.' + $
STRTRIM(ABS(exponent),2) + $
' )'

; -- Exponent is greater than or = to zero ->
; -- whole number ticklabel
( exponent GE 0 ): format = '( i' + $
STRTRIM(ABS(exponent)+1,2) + $
' )'

ENDCASE

and then use the format string in the return value, e.g.

RETURN, '10!E' + STRING( value, FORMAT = format ) + '!N'

or something similar depending on your tastes/needs.


Hope some of this is helpful, although I have to admit, the fact that IDL doesn't have a
stock polar plotting routine that produces a circular graph with the radial and concentric
circle tickmark axes is a bit ridiculous. Farting about with /POLAR and AXIS and whatnot
is sort of like using OG to plot, x, y - and in the end you still end up with
Cartesian-like axes.

Maybe there is a polar plotting routine out there in IDL software land somewhere. It is
sorely needed.

paulv

--
Paul van Delst A little learning is a dangerous thing;
CIMSS @ NOAA/NCEP Drink deep, or taste not the Pierian spring;
Ph: (301)763-8000 x7274 There shallow draughts intoxicate the brain,
Fax:(301)763-8545 And drinking largely sobers us again.
pvandelst@ncep.noaa.gov Alexander Pope.
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Previous Topic: IDL 5.4 and save files
Next Topic: Keyword list

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Fri Oct 10 13:13:55 PDT 2025

Total time taken to generate the page: 0.55937 seconds