Fake Waterfall Plot

// Igor can display waterfall plots using the NewWaterfall operation (choose Windows->New->Packages->Waterfall Plot).
// This requires storing your data in a 2D wave. You can also create a 3D waterfall plot using Gizmo.
//
// However, for the common case of displaying a series of spectra, you may find that a "fake waterfall plot"
// is more convenient. And it works with your original waveform or XY data.
//
// A fake waterfall plot is a regular graph with multiple waveform or XY traces where you use Igor's X and Y
// trace display offset feature to create the waterfall effect. This is simple and also gives you a regular
// Igor graph with regular traces that you can format and annotate using familiar techniques.
//
// Here is a procedure for converting a regular graph with multiple waveform or XY traces into a fake waterfall plot.
// The ApplyFakeWaterfall function converts a regular graph to a fake waterfall plot.
// The RemoveFakeWaterfall function converts it back to a regular graph.
//
// The attached experiment file contains these procedures along with sample data and a sample graph.
 
Function ApplyFakeWaterfall(graphName, dx, dy, hidden)      // e.g., ApplyFakeWaterfall("Graph0", 2, 100, 1)
    String graphName    // Name of graph or "" for top graph
    Variable dx, dy     // Used to offset traces to create waterfall effect
    Variable hidden     // If true, apply hidden line removal
    
    String traceList = TraceNameList(graphName, ";", 1)
    Variable numberOfTraces = ItemsInLIst(traceList)
 
    Variable traceNumber
    for(traceNumber=0; traceNumber<numberOfTraces; traceNumber+=1)
        String trace = StringFromList(traceNumber, traceList)
        Variable offsetX = (numberOfTraces-traceNumber-1) * dx
        Variable offsetY = (numberOfTraces-traceNumber-1) * dy
        ModifyGraph/W=$graphName offset($trace)={offsetX,offsetY}
        ModifyGraph/W=$graphName plusRGB($trace)=(65535,65535,65535)    // Fill color is white
        if (hidden)
            ModifyGraph/W=$graphName mode($trace)=7, hbFill($trace)=1       // Fill to zero, erase mode
        else
            ModifyGraph/W=$graphName mode($trace)=0                     // Lines between points
        endif
    endfor
End
 
Function RemoveFakeWaterfall(graphName)     // e.g., RemoveFakeWaterfall("Graph0")
    String graphName    // Name of graph or "" for top graph
    
    String traceList = TraceNameList(graphName, ";", 1)
    Variable numberOfTraces = ItemsInLIst(traceList)
 
    Variable traceNumber
    for(traceNumber=0; traceNumber<numberOfTraces; traceNumber+=1)
        String trace = StringFromList(traceNumber, traceList)
        ModifyGraph/W=$graphName offset($trace)={0,0}
        ModifyGraph/W=$graphName plusRGB($trace)=(65535,65535,65535)    // Fill color is white
        ModifyGraph/W=$graphName mode($trace)=0                         // Lines between points
    endfor
End
Fake Waterfall.png (22.2 KB) Fake Waterfall Plot.pxp (62.83 KB)

Forum

Support

Gallery

Igor Pro 10

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More