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

Home » Public Forums » archive » More Function Graphics Confusion
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
More Function Graphics Confusion [message #77570] Tue, 13 September 2011 11:57 Go to next message
David Fanning is currently offline  David Fanning
Messages: 11724
Registered: August 2001
Senior Member
Folks,

Am I the only one who finds function graphics confusing? :-(

Here is some code that produces a filled contour plot correctly.

;*********************************************************** **
PRO contour_experiments
data = RandomU(-3L, 9, 9)
LoadCT, 0
TVLCT, 255, 0, 0, 0 ; Red
TVLCT, 0, 0, 255, 1 ; Blue
TVLCT, 0, 255, 0, 2 ; Green
TVLCT, 255, 255, 0, 3 ; Yellow
TVLCT, rgb, /GET
rgb = Congrid(rgb[0:3, *], 256, 3)
w = Window(DIMENSIONS=[750, 400])
w.Refresh, /DISABLE
levels = [0.00, 0.25, 0.50, 0.75, 1.00]
over = Contour(data, /CURRENT, C_VALUE=levels, AXIS_STYLE=0, $
C_COLOR='black', FONT_SIZE=10, C_LABEL_SHOW=Replicate(1,4), $
C_USE_LABEL_ORIENTATION=1, POSITION=[0.1, 0.1, 0.9, 0.8], $
C_LABEL_INTERVAL=0.6)
c = Contour(data, /CURRENT, C_VALUE=levels, /FILL, $
POSITION=[0.1, 0.1, 0.9, 0.8], AXIS_STYLE=2, $
RGB_TABLE=rgb, RGB_INDICES=BytScl(Indgen(4)))
over.Order, /BRING_FORWARD
c.GetData, z, x, y
z[0] = 0.0 & z[1] = 1.0
fakeContourPlot = Contour(z, /CURRENT, C_VALUE=levels, /FILL, $
POSITION=[0.1, 0.1, 0.9, 0.8], AXIS_STYLE=2, $
RGB_TABLE=rgb, RGB_INDICES=Indgen(256))
; fakeContourPlot = Image(cgdemodata(7), RGB_TABLE=rgb, /current)
cb = Colorbar(TARGET=fakeContourPlot , $
POSITION=[0.1, 0.90, 0.9, 0.95], MAJOR=5)
fakeContourPlot.Delete
w.Refresh
END
;*********************************************************** **

On lines 23-25 you find code for a fake contour plot. This is
required (on my machine) to produce a color bar with correctly
labeled tick marks.

If you comment these three lines out, and uncomment line 26, which
uses a fake image plot, rather than a fake contour plot, for this
purpose, the color bar just doesn't show up at all!

Can anyone think of a reason for this?

It appears the fakeContourPlot.Delete line is the culprit.
When I use the contour plot, this line deletes only the contour
plot, but the color bar stays. When I use the image plot, this line
deletes BOTH the image and the color bar. Is this another feature
I should be aware of?

I realize this is a bit of a contrived example, but I
am working on an article and this inconsistency is
driving me crazy!

I am beginning to understand why there is no documentation
for function graphics. People think you have switched over
to writing fiction. And, bad fiction at that. No one will
believe it actually works this way. :-(

On another note:

I have updated my Teaching an Elephant to Dance article
this morning to reflect Mark Piper's better way of doing
things, although Mark didn't get back to me to answer any
of my questions. I think he is probably still researching
them (knowing how slowly this goes!), but Coyote, ever the
paranoid, thinks something more sinister has happened and
he has been silenced. We are both waiting anxiously for a
word from him.

Cheers,

David

--
David Fanning, Ph.D.
Fanning Software Consulting, Inc.
Coyote's Guide to IDL Programming: http://www.idlcoyote.com/
Sepore ma de ni thui. ("Perhaps thou speakest truth.")
Re: More Function Graphics Confusion [message #77657 is a reply to message #77570] Tue, 13 September 2011 15:34 Go to previous message
David Fanning is currently offline  David Fanning
Messages: 11724
Registered: August 2001
Senior Member
David Fanning writes:

> If you comment these three lines out, and uncomment line 26, which
> uses a fake image plot, rather than a fake contour plot, for this
> purpose, the color bar just doesn't show up at all!
>
> Can anyone think of a reason for this?
>
> It appears the fakeContourPlot.Delete line is the culprit.
> When I use the contour plot, this line deletes only the contour
> plot, but the color bar stays. When I use the image plot, this line
> deletes BOTH the image and the color bar. Is this another feature
> I should be aware of?

This turns out to be the case because when you delete
a contour plot object, it leaves a set of axes behind,
thus there is "something" there to which the colorbar
can be attached, so it stays.

When you delete an image, the image is gone, nothing
stays behind, so the color bar attached to that image
is also destroyed.

At least I *think* this is the explanation. I've
pretty much given up looking for rationality and
am willing to believe almost anything at the moment. :-(

Here is a program to play with, if you are interested.
Switch the "anImageObj" lines to see what happens with
a contour plot.

loadct, 33
TVLCT, rgb, /Get
thisImage = cgDemoData(7)
w = Window(DIMENSIONS=[500, 350])

anImageObj = Image(thisImage, RGB_TABLE=rgb, /CURRENT)
;anImageObj = Contour(thisImage, RGB_TABLE=rgb, /CURRENT)
cb = Colorbar(TARGET=anImageObj , $
POSITION=[0.1, 0.90, 0.9, 0.95], MAJOR=5)
anImageObj.Delete
END

Cheers,

David



--
David Fanning, Ph.D.
Fanning Software Consulting, Inc.
Coyote's Guide to IDL Programming: http://www.idlcoyote.com/
Sepore ma de ni thui. ("Perhaps thou speakest truth.")
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Re: Trouble exporting vector .eps file from ivolume
Next Topic: Four Million Page Downloads!

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

Current Time: Thu Oct 09 20:07:57 PDT 2025

Total time taken to generate the page: 1.20338 seconds