跳转至

使用方程函数实现动态绘图

原文链接: https://www.nv5geospatialsoftware.com/Learn/Blogs/Blog-Details/dynamic-plots-using-an-equation-function

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 将自动更新方程。

使用多值不规则点的线性网格化加速(GRIDDATA) 地球科学与大数据