【问题标题】:How can I make gnuplot show coordinates of a plotted function which have same x value as the mouse pointer?如何让 gnuplot 显示与鼠标指针具有相同 x 值的绘图函数的坐标?
【发布时间】:2023-03-23 13:01:02
【问题描述】:

如果在gnuplot中输入plot(x**2),得到这个函数的绘图,在绘图的左下角可以看到鼠标指针位置对应的坐标。

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

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

【问题讨论】:

  • 你用的是什么类型的终端?
  • 哦,那会很有用...
  • 通过阅读文档,我很确定这是不可能的......但是,我认为您可以设置一个热键,当您在 x,f(x)例如,点击一个按钮。你对此感兴趣吗?
  • @mgilson - 有一个热键来标记一个点当然很有趣,但并不是我真正想要的。
  • @mgilson 如果可以在热键上使用,难道不能在鼠标移动时触发吗?

标签: gnuplot


【解决方案1】:

虽然这对函数 (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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-07
    • 2012-06-05
    • 2012-05-09
    • 2015-04-14
    • 2021-08-31
    • 2017-02-16
    • 1970-01-01
    • 2012-05-17
    相关资源
    最近更新 更多