web-dev-qa-db-ja.com

Gnuplot-X軸からプロットへ、およびプロットからY軸へ垂直線を描画します

私はgnuplotを介して描かれたガウス曲線を持っていて、x軸から上に伸び、曲線にぶつかるところに正確に止まり、y軸にぶつかるように左に垂直になり、理想的には値を表示したい両方の軸、およびx軸と交差する場所にシンボルを表示します。

これをgnuplotに追加する正しい方法は何ですか? noheadを使用して矢印をいじってみましたが、私はgnuplotの初心者であり、必要なことを達成する方法を見つけることができないようです。

11
jbx

私は自分のニーズに対する簡単な解決策を見つけることができました。 arrowは、実際にnoheady座標をプロット自体の関数として指定することにより、toとともに使用できます。

したがって、関数f(x)があり、x = 3からf(3)および対応する水平線y = f(3)まで、 2つの矢印を追加する必要があります。

set arrow from 3,0 to 3,f(3) nohead
set arrow from 0,f(3) to 3,f(3) nohead

また、線が軸と交差する場所に目盛りを追加したかったので、足りない場合は次のようにできます。

set xtics add (3 3)
set ytics (f(3) f(3))

y軸には小数点以下の桁が含まれている可能性があるため、次のようなことも必要になる場合があります(この場合は小数点以下3桁です)。

set format y "%1.3f"

X軸の目盛りの下にあるラベルを作成する方法を見つけることができませんでしたが、上記で十分でした。それが同じ解決策を探している誰かのために役立つことを願っています。

18
jbx

私は過去にこの問題を次の方法で解決しました:

線の移動先となる曲線上の点のペア(x​​、y)を知って、次のことを行います。-値のセット(x、{0..y})を計算し、それをプロットします。これは垂直線になります--値のセット({0..x}、y)を計算し、それをプロットします。これは水平線になります

または、ダミー配列a(x、{whole y range})と({whole x range}、y)を作成し、(x、y)を指定して、原点から点(x、y)までこれらをプロットできます。範囲設定のポイント。

これらは最も効率的な方法ではないかもしれませんが、どちらも私にとってはうまくいきました。これらの操作は、Perlスクリプトを使用してPerlデータ言語(PDL)で行いました。そこからgnuplot構成ファイルを作成し、「system」を使用してgnuplotを呼び出しました。

お役に立てれば!

1
user2396515