プロット座標の単位でgnuplotのポイントサイズを設定するにはどうすればよいですか?
つまり、xrange を大きくすると、ポイントが小さくなるはずです。
これはすべて端末依存のようです。回避策はありますか?
インラインデータを使用した小さな例を次に示します...
plot '-' u 1:2:1 ps variable
1 2
2 3
3 4
4 5
5 6
e
データファイルの列を使用してポイントサイズを変更することは可能ですが、ポイントサイズ(およびポイントタイプでさえ)は端末に依存する量であるため、各ポイントの大きさを指定する方法はわかりません。私が思いつく唯一の回避策は、端末に依存する値でポイントをスケーリングすることです。
default_value=1.0
func(x)=1.0*x #Change this to change the functional dependence of the pointsize on x.
scale_point(x)=(GPVAL_TERM=="postscript") ? 1.0*func(x) :\
(GPVAL_TERM=="png") ? 2.0*(x) :\
default_value
plot "mydata.dat" u 1:2:(scale_point($1)) w pt ps variable
それは醜いですが、それは仕事を成し遂げるはずです-同様に、ある種の端末の独立性を達成するためにポイントタイプを返す同様の関数を書くこともできます...
編集
xが大きくなるにつれてポイントのサイズが直線的に増加することに注意してください。ただし、必要に応じてポイントを小さくしたい任意の関数を置き換えることができます。私が言っているのは、「これはすべて端末に依存する」と述べているため、オプションが存在するとは思わないということです。最小限の介入でプロットごとにこれを変更できるようにする醜いハックを提供しようとしました-異なる端末などを可能にします.
編集2
あなたのコメントに返信しているときに、役立つかもしれない gnuplot ドキュメントの奇妙な小さなコーナーを思い出しました。
set style fill transparent solid noborder #whatever fillstyle you want...
plot 'mydata' u 1:2:3 w circles
参照してくださいhelp circles
...この機能がいつ導入されたかはわかりませんが、おそらくgnuplot 4.3で導入されましたが、4.2を使用している場合は、試してみて、どうなるか教えてください...
私が質問を正しく理解していれば、ポイントサイズを xrange の減少関数にしたいだけです。ポイントが印刷される正確な大きさと、それらがどのように見えるかは、端末によって異なります。ただし、必要な基本動作を取得するのは難しくありません。
まず、ポイントサイズを返す関数を定義します。やってみよう
sps(a,b) = 1./(b-a)
xrange を設定します。
set xrange [0:3]
使用しないプロットを作成します。
plot sin(X)
これは、gnuplot の特殊変数のいくつかを定義するために行いました。今できること
plot sin(x) with points pt 7 ps sps(GPVAL_X_MIN, GPVAL_X_MAX)
ここで xrange をリセットし、両方のプロット コマンドを再入力すると、xrange に反比例してポイント サイズが変化することがわかります。おそらく、私が使用した「sps」の例とは異なるポイントサイズの関数が必要になるでしょう。これがあなたが求めていたようなものであることを願っています。