グラフをプロットし、グラフにいくつかの重要なポイントを表示したいとします。 gnuplotでこれを行うにはどうすればよいですか?たとえば、y = x2、(2,4)と(4,16)を表示したい。
私がこれを書いているとき、最初のグーグル結果メソッドは非常に不十分であるため、上記の答えはあまり役に立たないと思います。
Stdoutを読み取ってデータを生成するgnuplotの機能を使用して、
plot "< echo '1 2'"
ポイントx = 1、y = 2に単一のデータポイントを配置します。
これにはいくつかの欠点があり、ほとんど使用できません。
まず、このメソッドはすでに両方のタイプの引用符を使用しているため、このメソッドに変数を渡す良い方法はありません。したがって、sprintfステートメントで変数を渡すためのマクロの使用は無効になります。これは、3番目のタイプの引用符が必要になるためです。
次に、ポイントを存在させるために、plotコマンドを実行する必要があります。つまり、プロットしたいポイントが複数ある場合は、メインのプロットステートメントにプロットステートメントを追加する必要があります。明示的なリストとしてではなく、スクリプト化された方法でこれを実行したい場合は、マクロを実行する必要があります。これは、すでに指摘したように、この手法では機能しません。
Gnuplotには、単一のポイントを生成するのにはるかに適した2つの手法があります。
まず、あるポイントにマーカーが必要な場合は、gnuplotオブジェクトタイプを使用して、そのポイントに円をプロットできます。
set object circle at <x>,<y> size <r>
ここで、<x>
と<y>
は点の座標であり、<r>
は描画される円のサイズです。円は、他のgnuplotオブジェクトと同様に、色付け、塗りつぶし、透明化などを行うことができます。
次に、特定のポイントスタイルのマーカーが本当に必要な場合は、gnuplotのlabel
コマンドを使用できます。ラベルテキストを空に設定し、ポイントタイプを割り当てると、指定した座標にポイントが描画されます。
set label <i> "" at <x>,<y> point pointtype <n>
タグインデックス<i>
のポイントをポイントx=<x>
、y=<y>
のポイントタイプ<n>
に設定します(デフォルトのwxtターミナルでは、n = 1は赤十字、n = 2は緑の聖アンデレ十字、n = 3は青いアスタリスクなどです...)
このようにして、プロットする複数のポイントを設定でき、プロットするすべての単一ポイントでプロットステートメントを乱雑にすることなく、別の関数に対して個別のプロットコマンドを発行できます。
まず、f()
をプロットする関数を定義する必要があります。たとえば、べき乗記号**
を使用します。 2つのグラフをプロットします。1つは関数用で、もう1つは重要なポイント用です。次に、ポイント4 16
と2 4
のデータを入力します。 e
を使用して終了できます。
f(x) = x ** 2
plot f(x), '-' with points
4 16
2 4
e
これで、必要に応じてレンダリングをカスタマイズできます。