使用方程字符串创建动态绘图
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 值重新计算方程。