2048 Rate this article:
No rating

Dynamic Plots Using an Equation String


The PLOT function's new Equation argument adds flexibility to the creation of plots in IDL, allowing you to create dynamic, interactive output.

The Equation argument on the PLOT function allows you to specify either a string containing an equation with variable X, or the name of an IDL function that accepts X as an input argument. The result of the equation (or the function) should be a one-dimensional array of Y coordinates to be plotted.

  • If Equation is an expression, then the EXECUTE function is called once with the X array. Note that in certain circumstances (such as the IDL Virtual Machine), you may not be able to use the EXECUTE function.
  • If Equation is a function name, then CALL_FUNCTION is called once, with the X array as an input argument. The function should return a one-dimensional result array.

Once IDL creates the plot output, if you then interactively adjust the plot range, IDL will automatically recompute the equation to cover the new range.

We'll use the BESELJ function in IDL to show how to use a Function String in the Equation Argument:


; Plot J Bessel Functions

pj0 = PLOT('BESELJ(X, 0)', XRANGE=[0.0, 50],  $

  XTITLE='X', YTITLE='$J_n(x)$ or $Y_n(x)$', $

  TITLE='J Bessel Function')

pj1 = PLOT('BESELJ(X, 1)', 'r2', XRANGE=[0.0, 50], /OVERPLOT)

pj2 = PLOT('BESELJ(X, 2)', 'b2', XRANGE=[0.0, 50], /OVERPLOT)

; Annotate the plot.

xcoords = [1, 1.66, 3]

ycoords = [.8, .62,.52]

labels = '$\it' + ['J_0','J_1','J_2'] + '$'

  t = TEXT(xcoords, ycoords, labels, /DATA)


If you run the code above, it should generate a graphic like this:

Once IDL creates the plot, test out its dynamic capabilities:

  • Try clicking with the middle mouse button on the graphic and panning around.
  • You can also use the mouse wheel to zoom in or out, or hold down the <Shift> key and draw a zoom box.
  • Change the plot range programatically at the IDL command line:

pj0.xrange=[0.0, 150]

As you change the plot range, IDL recomputes the equation with new X values that span the new range.