11

gnuplot で と入力plot(x**2)してこの関数のプロットを取得すると、プロットの左下隅に、マウス ポインターの位置に対応する座標が表示されます。

私が知りたいのは、ポインターを関数のグラフに「スナップ」する方法があるかどうかです (または、座標が表示されている十字線で、マウスポインターと同じ x 座標を共有するようにします)。

最終的な結果として、プロットに沿ってマウスを左から右に移動すると、ポインターと同じ x 値を持つ十字線が関数のグラフに直接表示され、この十字線の現在の座標は次のようになります。どこかに印刷されます (例: プロットの左下隅)。言い換えれば、印刷されたクロスヘア座標は、ある x 値に対して常に (x, f(x)) になります。

4

1 に答える 1

2

これは関数 (x, f(x)) に役立ちますが、gnuplot は 2D および 3D 曲面だけでなくパラメトリック関数もプロットできるため、この機能は使用が制限されることに注意してください。また、 および を使用して、およびを使用set tableして値をコンソールに出力できることにも注意してください。forprint

対話性が必要な場合は、マウス ポインター X の位置に従って (x, f(x)) のペアを出力する MWE を次に示します。これは、画面をクリックした場合に、画面上のラベルとして、およびコンソールへの出力を介して出力します。 (必要に応じて削除します)。

#!/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
于 2013-09-19T21:48:21.380 に答える