Graphing upgrades

Hi, making graphs is Igor's bread and butter, but there are always ways to improve. Here are two that I would appreciate:

1) It would be nice for the Cityscape mode to have "fill to zero / fill to next".

2) It would similarly be nice to have transparency for fill modes. For example, if one graphs two curves with fill to zero, one could then see the overlap explicitly, since it would be darker than the shades of the two curves (or a blended color if two colors were used). The rather misleading "% Fill" option merely changes the saturation of the color.
I would also like to add a few graphing suggestions.

1) From the "replace wave" dialog: I would like to be able to change multiple traces at the same time.
As it is you can only change X and/or Y for 1 trace, and if you select another trace before "Do it" these changes are lost. I often have multiple traces on one graph and need to change the X axis on all or change the plot range on all. As is, multiple lines of command line typing is faster than the dialog, but still not efficient.

2) On a similar note, I would like to change the axis association of an existing trace. For example: in an XY plot, I would like to associate the Y value of a given trace with the Right axis instead of the Left. (without loosing all my trace preferences -colors,symbols,error bars)

Thank you.
J.K.
NASA GRC
Cleveland, OH
I'd also love to see transparency for fill modes; it would be a helpful way of visualizing error bands.
kravlor wrote:
I'd also love to see transparency for fill modes; it would be a helpful way of visualizing error bands.


I would love to see transparency as a more general concept in Igor. It would be especially nice if any color designation in Igor would accept not just (R,G,B) values, but also (R,G,B,A) values. An obvious example where this would be useful (in addition to your suggestion) is when plotting two or more histograms, where right now the histogram that is topmost effectively shadows the lower plots. As far as I know there is no elegant solution to this problem in the current Igor.

This should also be pretty interesting when displaying images, where (R,G,B,A) could be recognized as a standard display format, similar to how image plots will recognize (R,G,B) today. This would make for some interesting blending effects.
Note that Cityscape fill to zero is pretty much the same as just bars mode.

You can do overlapping fill modes but only for the pattern types and with a "magic" white background color. See
DisplayHelpTopic "Drawing Improvements 6.1"

Image plots do support RGBA already. Search the What's Changed Since 6.10.ihf for "Image plots now support 4 plane RGBA image waves."

As for support for solid fill colors with RGBA, that is something that I have recently added for the future Igor Pro 7. But IP7 is no where near even an alpha release so there will be quite a wait.
Larry Hutchinson wrote:
Note that Cityscape fill to zero is pretty much the same as just bars mode.


That wouldn't do exactly what I was after, but it did make me realize that there is a way to do "Cityscape fill to zero". In essence, you have two copies of a graph. The first uses bars mode and makes the outline on the bar the same color as the solid fill. The second uses Cityscape. Do it in that order for the traces to look right. Here's a quick demo to show what it looks like.

Make /o/n=1000 w=gnoise(1)
Make/N=30/O w_Hist;DelayUpdate
Histogram/B=1 w,w_Hist
Display /W=(570,70,965,278) w_Hist,w_Hist
ModifyGraph mode(w_Hist)=5,mode(w_Hist#1)=6
ModifyGraph lSize(w_Hist#1)=2
ModifyGraph rgb(w_Hist)=(65535,49151,49151)
ModifyGraph hbFill(w_Hist)=2
ModifyGraph usePlusRGB(w_Hist)=1
ModifyGraph plusRGB(w_Hist)=(65535,49151,49151)


I will stand by the statement, though, that it would be a convenience to be able to do this with a single trace as an option to Cityscape.

Full support for transparency effects through RGBA is a great idea. It will make IP7 worth the upgrade on its own....

John Bechhoefer
Department of Physics
Simon Fraser University
Burnaby, BC, Canada
Another thing which just came to my mind. I have to display lots of complex waves, and what always bothers me is that to plot the real part and the imaginary at the same time I have to add twice the same wave. What I would like to see is a field in the "Modify Trace Appearance" dialog where I can select with checkboxes what parts of an complex wave Igor plots. I guess that the phase should be automatically on a different scale than the real and imaginary part. The magnitude could be on the same scale as the those.

Cheers,

B.S.
By default appending a complex wave to a graph displays both the real and imaginary parts. Perhaps you mean something different?

--Jim Prouty
Software Engineer, WaveMetrics, Inc.
JimProuty wrote:
By default appending a complex wave to a graph displays both the real and imaginary parts. Perhaps you mean something different?


I suspect that Java was asking for something like how the data browser plots complex waves. It plots the real and imaginary components separately, in different colors, instead of plotting both components together in one trace, which is the default behavior in graphs.
I suggest something like aclight says but maybe in a more flexible way.

I look at a complex wave as one object from which I can display several 'properties' and I guess you at Wavemetrics have the philosophy of handling the real and the imaginary part as independent waves.

I try again to explain what I mean: Assume you have a complex wave with some x scaling and you want to plot it. It is - not only for me - unintuitive to create a graph which plots let's say three copies of the same wave 'just to display real and imaginary part and the magnitude'. What is intuitive for me and others of my group is to plot one wave and then select in the graph properties window which parts I want to display - and also which color to use for which 'property'. It is more or less the other way around.

I guess this also goes together with allowing different scaling factors, offsets and error bars for real and imaginary parts.

Up to now I just was to lazy to write a plotting function which would do all the jobs for me, so I had to type

Display wave,wave,wave; AppendToGraph/R wave
ModifyGraph cmplxMode(wave)=3,cmplxMode(wave#1)=1;DelayUpdate
ModifyGraph cmplxMode(wave#2)=2,cmplxMode(wave#3)=4
ModifyGraph rgb(wave)=(0,0,0),rgb(wave#2)=(0,0,65535);DelayUpdate
ModifyGraph rgb(wave#3)=(3,52428,1)


What I suggest is something like:

Display wave;
ModifyGraph cmplxMode(wave)=15; // binary 1111 for displaying magnitude,real and imaginary part and phase
//Here I don't know how to solve the color part and so on



Anyway it's just a suggestion, and as I said one could write a small function which does the job. Only cahning things in the properties window is still little bit strange ;)

Cheers,

B.S.

I second John's suggestion, I am also googling for these two options. It definitely has a strong application need in my opinion, and it will be really nice to see it implanted in the next Igor software.

bech wrote:
Hi, making graphs is Igor's bread and butter, but there are always ways to improve. Here are two that I would appreciate:

1) It would be nice for the Cityscape mode to have "fill to zero / fill to next".

2) It would similarly be nice to have transparency for fill modes. For example, if one graphs two curves with fill to zero, one could then see the overlap explicitly, since it would be darker than the shades of the two curves (or a blended color if two colors were used). The rather misleading "% Fill" option merely changes the saturation of the color.