跳转至

使用方程字符串创建动态绘图

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

3241 评价本文:

暂无评分

使用方程字符串创建动态绘图

作者:匿名 发表日期:2014年3月20日 星期四

PLOT 函数新增的 Equation 参数增强了在 IDL 中创建绘图的灵活性,使您能够创建动态、交互式的输出。

PLOT 函数的 Equation 参数允许您指定一个包含变量 X 的方程字符串,或者接受 X 作为输入参数的 IDL 函数名。方程(或函数)的结果应为一维的 Y 坐标数组,用于绘图。

  • 如果 Equation 是一个表达式,则 EXECUTE 函数会被调用一次,并传入 X 数组。请注意,在某些情况下(例如 IDL 虚拟机中),您可能无法使用 EXECUTE 函数。

  • 如果 Equation 是一个函数名,则 CALL_FUNCTION 会被调用一次,并将 X 数组作为输入参数传入。该函数应返回一个一维的结果数组。

一旦 IDL 创建了绘图输出,如果您随后交互式地调整绘图范围,IDL 将自动重新计算方程以适应新的范围。

我们将使用 IDL 中的 BESELJ 函数来展示如何在 Equation 参数中使用函数字符串:

; 绘制 J 型贝塞尔函数

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

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

TITLE='J 型贝塞尔函数')

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

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

; 标注绘图。

xcoords = [1, 1.66, 3]

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

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

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

如果您运行上面的代码,它应该生成类似这样的图形:

IDL 创建绘图后,您可以测试其动态功能:

  • 尝试在图形上点击鼠标中键并进行拖拽平移。
  • 您也可以使用鼠标滚轮进行缩放,或者按住 <Shift> 键并拖拽出一个缩放框。
  • 在 IDL 命令行中通过编程方式更改绘图范围:

pj0.xrange=[0.0, 150]

当您更改绘图范围时,IDL 会使用覆盖新范围的 X 值重新计算方程。

使用 Landsat 8 质量评估波段 无人机日益扩大的作用