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

Home » Public Forums » archive » Re: Is there a way to plot with axis breaks in IDL?
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Re: Is there a way to plot with axis breaks in IDL? [message #70345] Sat, 03 April 2010 11:21 Go to next message
mankoff is currently offline  mankoff
Messages: 131
Registered: March 2004
Senior Member
On Apr 2, 6:12 am, David Fanning <n...@dfanning.com> wrote:
>
> I've made plots like this before. It is not particularly
> difficult to do *a* plot. It is more difficult to write
> this kind of functionality in a general way.
>

I think I just came up with a fairly generic implementation here:
http://code.google.com/p/kdm-idl/source/browse/trunk/plotbre ak.pro

For example I was able to produce the following graphic (including
equivalent of OPLOT command) with the following two lines of code.
http://kenmankoff.com/tmp/plotbreak.png

plotbreak, time, p, $
position=pos, $
xrange0=[0,1000], $
xrange1=[1000,3000], $
breakpct=66, $
key0={ytitle:'Population (Phytoplankton)', $
xtitle:'Time (days)', $
xtickn:['0','20','40','60','80',' '],$
title:'Predator v. Prey', $
thick:2}, $
key1={xtitle:'Time (days)', $
yst:5,thick:2,$
xtickn:['100','150','200','250','300'] }

plotbreak, time, z, $
position=pos, $
breakpct=66, $
xrange0=[0,1000], $
xrange1=[1000,3000], $
key0={NOERASE:1,color:253,thick:3,yst:5,xst:5}, $
key1={color:253,thick:3,xst:5,$
ytitle:'Population (Zooplankton)'}



A truly generic algorithm, which would be difficult, would be
recursive and let me specify BREAKPCT=[10,30,80,90,95] rather than
just as a single percentage (66% in the above example). It should also
be recursive in X and Y. That algorithm, when complete, could then
easily be used to draw, for example, a calendar with the weekends
(first and last column) thinner than the middle weekdays. I'll leave
that as an exercise to the reader.

-k.
Re: Is there a way to plot with axis breaks in IDL? [message #70355 is a reply to message #70345] Fri, 02 April 2010 06:12 Go to previous messageGo to next message
David Fanning is currently offline  David Fanning
Messages: 11724
Registered: August 2001
Senior Member
Dave Poreh writes:

> I am also very interested.
> I think David could write an article about that!

Or, somebody who needs the functionality can do it
and write it up, and I would publish it for them! :-)

I've made plots like this before. It is not particularly
difficult to do *a* plot. It is more difficult to write
this kind of functionality in a general way.

Cheers,

David



--
David Fanning, Ph.D.
Fanning Software Consulting, Inc.
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Sepore ma de ni thui. ("Perhaps thou speakest truth.")
Re: Is there a way to plot with axis breaks in IDL? [message #70356 is a reply to message #70355] Fri, 02 April 2010 05:34 Go to previous messageGo to next message
d.poreh is currently offline  d.poreh
Messages: 406
Registered: October 2007
Senior Member
On Apr 1, 7:57 pm, mankoff <mank...@gmail.com> wrote:
> On Apr 1, 8:28 pm, "fututre.keyboard" <future.keybo...@gmail.com>
> wrote:
>
>> I know this is rare when you need to do this kinda plot. But i'd
>> appreciate a lot if someone can point me to the right direction.
>> Thanks!
>
>> BTW: here is an example of axis break plot from Originlab's webpage.http://www.originlab.com/index.aspx?s=8&lm=114&a mp;pid=1020
>
> Two plot commands with various combinations of POSITION and YSTYLE
> keywords. Perhaps some use of the AXIS command. Then, PLOTS to draw
> the four "/" symbols.
>
>   -k.

I am also very interested.
I think David could write an article about that!
Cheers
D.
Re: Is there a way to plot with axis breaks in IDL? [message #70357 is a reply to message #70356] Thu, 01 April 2010 20:57 Go to previous messageGo to next message
mankoff is currently offline  mankoff
Messages: 131
Registered: March 2004
Senior Member
On Apr 1, 8:28 pm, "fututre.keyboard" <future.keybo...@gmail.com>
wrote:
> I know this is rare when you need to do this kinda plot. But i'd
> appreciate a lot if someone can point me to the right direction.
> Thanks!
>
> BTW: here is an example of axis break plot from Originlab's webpage.http://www.originlab.com/index.aspx?s=8&lm=114&a mp;pid=1020

Two plot commands with various combinations of POSITION and YSTYLE
keywords. Perhaps some use of the AXIS command. Then, PLOTS to draw
the four "/" symbols.

-k.
Re: Is there a way to plot with axis breaks in IDL? [message #70404 is a reply to message #70345] Thu, 08 April 2010 00:33 Go to previous message
fututre.keyboard is currently offline  fututre.keyboard
Messages: 10
Registered: September 2009
Junior Member
Thanks for the implementation. It takes only a little tweak to make
the plot useful. What I need to pay attention when tweaking are the
tick- related stuff. The other thing is that I have to suppress the x-
title/title and use xyouts to get a centered x-title/title. Although I
don't need to break up y-axis, I would imagine a hard time to xyouts y-
title in a usual orientation.

E

On Apr 3, 11:21 am, mankoff <mank...@gmail.com> wrote:
> On Apr 2, 6:12 am, David Fanning <n...@dfanning.com> wrote:
>
>
>
>> I've made plots like this before. It is not particularly
>> difficult to do *a* plot. It is more difficult to write
>> this kind of functionality in a general way.
>
> I think I just came up with a fairly generic implementation here:http://code.google.com/p/kdm-idl/source/browse/trunk/pl otbreak.pro
>
> For example I was able to produce the following graphic (including
> equivalent of OPLOT command) with the following two lines of code.http://kenmankoff.com/tmp/plotbreak.png
>
>   plotbreak, time, p, $
>              position=pos, $
>              xrange0=[0,1000], $
>              xrange1=[1000,3000], $
>              breakpct=66, $
>              key0={ytitle:'Population (Phytoplankton)', $
>                    xtitle:'Time (days)', $
>                    xtickn:['0','20','40','60','80',' '],$
>                    title:'Predator v. Prey', $
>                    thick:2}, $
>              key1={xtitle:'Time (days)', $
>                    yst:5,thick:2,$
>                    xtickn:['100','150','200','250','300'] }
>
>   plotbreak, time, z, $
>              position=pos, $
>              breakpct=66, $
>              xrange0=[0,1000], $
>              xrange1=[1000,3000], $
>              key0={NOERASE:1,color:253,thick:3,yst:5,xst:5}, $
>              key1={color:253,thick:3,xst:5,$
>                    ytitle:'Population (Zooplankton)'}
>
> A truly generic algorithm, which would be difficult, would be
> recursive and let me specify BREAKPCT=[10,30,80,90,95] rather than
> just as a single percentage (66% in the above example). It should also
> be recursive in X and Y. That algorithm, when complete, could then
> easily be used to draw, for example, a calendar with the weekends
> (first and last column) thinner than the middle weekdays. I'll leave
> that as an exercise to the reader.
>
>   -k.
Re: Is there a way to plot with axis breaks in IDL? [message #70409 is a reply to message #70345] Wed, 07 April 2010 09:08 Go to previous message
mankoff is currently offline  mankoff
Messages: 131
Registered: March 2004
Senior Member
On Apr 3, 11:21 am, mankoff <mank...@gmail.com> wrote:
> On Apr 2, 6:12 am, David Fanning <n...@dfanning.com> wrote:
>
>
>
>> I've made plots like this before. It is not particularly
>> difficult to do *a* plot. It is more difficult to write
>> this kind of functionality in a general way.
>
> I think I just came up with a fairly generic implementation here:http://code.google.com/p/kdm-idl/source/browse/trunk/pl otbreak.pro
>
> For example I was able to produce the following graphic (including
> equivalent of OPLOT command) with the following two lines of code.http://kenmankoff.com/tmp/plotbreak.png
>
>   plotbreak, time, p, $
>              position=pos, $
>              xrange0=[0,1000], $
>              xrange1=[1000,3000], $
>              breakpct=66, $
>              key0={ytitle:'Population (Phytoplankton)', $
>                    xtitle:'Time (days)', $
>                    xtickn:['0','20','40','60','80',' '],$
>                    title:'Predator v. Prey', $
>                    thick:2}, $
>              key1={xtitle:'Time (days)', $
>                    yst:5,thick:2,$
>                    xtickn:['100','150','200','250','300'] }
>
>   plotbreak, time, z, $
>              position=pos, $
>              breakpct=66, $
>              xrange0=[0,1000], $
>              xrange1=[1000,3000], $
>              key0={NOERASE:1,color:253,thick:3,yst:5,xst:5}, $
>              key1={color:253,thick:3,xst:5,$
>                    ytitle:'Population (Zooplankton)'}
>
> A truly generic algorithm, which would be difficult, would be
> recursive and let me specify BREAKPCT=[10,30,80,90,95] rather than
> just as a single percentage (66% in the above example). It should also
> be recursive in X and Y. That algorithm, when complete, could then
> easily be used to draw, for example, a calendar with the weekends
> (first and last column) thinner than the middle weekdays. I'll leave
> that as an exercise to the reader.
>
>   -k.

Not sure if anyone has downloaded this but I found some bugs and fixed
them. I also changed key0 and key1 keywords to be _EXTRA_0 and
_EXTRA_1 to be more 'standard'.

Simpler examples of usage than originally provided, that I think
demonstrate generality, are:

x = dindgen(51)
IDL> plotbreak, x, exp(x)
IDL> plotbreak, x, exp(x), breakpct=10
IDL> plotbreak, x, exp(x), breakpct=90

IDL> plotbreak, x, exp(-x), breakpct=10
IDL> plotbreak, x, exp(-x), breakpct=90
IDL> plotbreak, x, exp(-x), breakpct=90, _EXTRA_1={xticks:1}

IDL> plotbreak, x, -exp(-x), breakpct=90, _EXTRA_1={xticks:1}
IDL> plotbreak, x, -exp(x), breakpct=10, _EXTRA_0={xticks:1}

And of course sine waves and random functions all appear to work well
with this algorithm.

I won't post further updates here. The program (and code library) have
RSS feeds if you are interested in more...

-k.
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Re: Producing sounds in IDL
Next Topic: Re: Best way to generate arrays of coordinates for hypersurface calculations?

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

Current Time: Wed Oct 08 15:56:40 PDT 2025

Total time taken to generate the page: 0.00647 seconds