[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

*Subject*: Re: line graph problems*From*: Paul van Delst <paul.vandelst(at)noaa.gov>*Date*: Mon, 26 Mar 2001 11:22:53 -0500*Newsgroups*: comp.lang.idl-pvwave*Organization*: CIMSS @ NOAA/NCEP*References*: <2snsbtg3hccdm3alhocq5uarumg1dcbaa0@4ax.com>*Xref*: news.doit.wisc.edu comp.lang.idl-pvwave:24140

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.

**Follow-Ups**:**Re: line graph problems***From:*Paul van Delst

**References**:**line graph problems***From:*Brian

- Prev by Date:
**Re: Widget Fonts** - Next by Date:
**Re: line graph problems** - Prev by thread:
**Re: line graph problems** - Next by thread:
**Re: line graph problems** - Index(es):