如何使绘制函数的gnuplot显示坐标与鼠标指针具有相同的x值?

Mar*_*ark 10 gnuplot

如果在gnuplot中输入plot(x**2)并获得此函数的图,则在图的左下角我可以看到与鼠标指针位置对应的坐标.

我想知道的是,是否有一种方法可以将指针"捕捉"到函数的图形(或者更确切地说是显示坐标的十字准线,使它们与鼠标指针共享相同的x坐标).

最终效果是当我沿着绘图从左到右移动鼠标时,与指针具有相同x值的十字准线将直接显示在函数的图形上,并且此十字准线的当前坐标将是在某处打印(例如在图的左下角).换句话说,对于某些x值,打印的十字线坐标总是(x,f(x)).

And*_*eas 2

虽然这对于函数 (x, f(x)) 很有用,但请注意,gnuplot 还可以绘制参数函数以及 2D 和 3D 曲面,因此此功能的用途有限。另请注意,您已经可以使用 和 输出表并使用和set table将值输出到控制台。forprint

如果您确实需要交互性,这里有一个 MWE,如果您单击屏幕,它会根据鼠标指针 X 位置输出 (x, f(x)) 对,作为屏幕上的标签以及通过打印到控制台(根据需要删除)。

#!/usr/bin/gnuplot -persist

## this binds commands to the mouse click that uses the MOUSE_X variable
## to do what you want
bind all "Button1" \
  'result=sprintf("(x, f(x)) = (%g, %g)", \
  MOUSE_X, f(MOUSE_X)); \
  set label 1 result at graph 0.05, graph 0.05; \
  print result; replot'

f(x) = x**2

plot f(x)
## the pause is needed only to keep gnuplot running,
## so you see the print output
## the label works without the pause
pause mouse
Run Code Online (Sandbox Code Playgroud)