使用方程函数实现动态绘图
19146 为本文评分:
暂无评分
使用方程函数实现动态绘图
匿名作者 2014年5月1日,星期四
这篇博文将继续探讨如何利用 PLOT 函数的 Equation 参数实现动态可视化。本例中,我们将探索使用函数名而非方程字符串的方法。关于本系列的第一篇文章,请参阅使用方程字符串实现动态绘图。
使用方程字符串存在一些限制:
- 只能包含单个语句
- 除非设置新的字符串,否则难以更改方程
- 无法向方程中传递参数
作为另一种方法,您可以创建一个包含方程式的 IDL 函数,然后将函数名传递给 Equation 参数。这种方法能让您的输入方程更加灵活。
例如,在上面代码的第一行,我们可以简单地写成:
p1= PLOT('LambertW', '2', DIMENSIONS=[400,400],$
NAME='Upperbranch', $
TITLE='LambertW Function', XRANGE=[-0.4, 2])
注意,我们的方程中不再有 X 变量,我们只有函数名。我们还可以创建自己的程序,该程序接受我们的 X 向量和一些可选的用户数据。
首先,创建一个名为 ex_plot_function 的新 IDL 程序,并将其保存在 IDL 路径下的 ex_plot_function.pro 文件中:
FUNCTION ex_plot_function, x, k
COMPILE_OPT IDL2
RETURN, LAMBERTW(DCOMPLEX(x), k)
END
接下来,我们创建绘图可视化,传入方程名称以及包含“分支”参数 k 的用户数据:
p1= PLOT('ex_plot_function', '2', DIMENSIONS=[400,400],$
NAME='k= 0', EQN_USERDATA=0, $
TITLE='$\Re${LambertW}',XRANGE=[-1, 2])
p2r= PLOT('ex_plot_function', '2r', /OVERPLOT, $
NAME='k= -1', EQN_USERDATA=-1)
p3r= PLOT('ex_plot_function', '2g', /OVERPLOT, $
NAME='k= 1', EQN_USERDATA=1)
p4r= PLOT('ex_plot_function', '2b', /OVERPLOT, $
NAME='k= 2', EQN_USERDATA=2)
lg= LEGEND(/DATA, POSITION=[1.9, -4], LINESTYLE=6, SHADOW=0)
我们的绘图现在应该如下图所示:

同样,我们可以在绘图上平移和缩放,IDL 将自动更新方程。