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

Home » Public Forums » archive » line graph problems
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: line graph problems [message #24370 is a reply to message #24286] Mon, 26 March 2001 08:22 Go to previous message
Paul van Delst is currently offline  Paul van Delst
Messages: 364
Registered: March 1997
Senior Member
Brian wrote:
>
> Hello,
>
> I have a couple of problems I was hoping that someone might be able to
> help me with...
>
> First of all I am trying to automate the process of creating a series
> of line graphs for a project (approximately 50). I could do this in
> Excel, but it is very time consuming. I was hoping to use IDL to make
> the process easier, but it seems to be causing me just as many
> headaches.
>
> There will be two plots per page and they have identical y-axis and
> variable x-axis ranges. The x-axis values are fairly large, which
> leads me to my first problem. Is it possible to change the text
> orientation for an axis using PLOT? I've searched the IDL help and
> David's book and can't seem to find any reference to this. I'd like
> to have the text display at a 45 degree angel so the values don't
> overlap when displayed.

My solution to exactly this problem (but for 7x4 plots per page) is avoid like the plague
anything that requires shifting plot/tick titles. IDL makes this an unbelievable difficult
process - particularly if you're going to automate it so it has to work in a fairly robust
manner (as opposed to a one off mucking about about with POSITION and XYOUTS and god-knows
what). I prefer to scale the data as follows:

max_exponent = 0
scale_check = ( ( MACHAR( /DOUBLE ) ).EPS )^2

maxval = ABS( MIN( xdata ) > MAX( xdata )

multiplier = 1.0d
xtitle = 'X Data'
IF ( maxval GT scale_check ) THEN BEGIN
exponent = FLOOR( ALOG10( maxval ) )
IF ( ABS(exponent) GT max_exponent ) THEN BEGIN
multiplier = 10.0d^(-exponent)
xtitle = 'X Data (x'+STRING(10.0d^(exponent),FORMAT='(e7.1)')+')'
ENDIF
ENDIF

PLOT, multiplier * xdata, ydata, $
XTITLE = xtitle, $
YTITLE = 'Y Data'

This "dynamically" scales the data and updates the x-axis title with the scale factor.
Depending on what you like, you can change the max_exponent. I prefer anything larger or
equal to 10 to be scaled. It has worked flawlessly for me so far (touch wood) with no
overlapping x-tick labels.


> My second problem relates to the y-axis. In
> several of my plots I have a few y values that are large while the
> rest are many times smaller. Is it possible to create a broken y-axis
> so I can bring out the smaller values while still displaying the
> larger ones?

This is a hairier problem but I would recommend steering away from doing what you suggest
(i.e. what other plotting/graphics packages do with ease - broken y-axis) at least with
IDL. Can you scale the data again in this case? E.g. plot the y-data on a logarithmic axis
(won't work if values < or = 0). If it can be done, then you can use the following as the
X|YTICKFORMAT keyword function name to avoid gobs of unneeded decimal places, e.g.
1000.00000 if the smallest tick label is 0.00001 (which I find _extremely_ annoying):


FUNCTION logticks, axis, index, value

exponent = LONG( ALOG10( value ) )

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

RETURN, STRING( value, FORMAT = format )

END


Hope some of this is useful.

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.
paul.vandelst@noaa.gov Alexander Pope.
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Making SAV files
Next Topic: converting to array

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

Current Time: Wed Oct 22 08:48:53 PDT 2025

Total time taken to generate the page: 0.64240 seconds