web-dev-qa-db-ja.com

x軸のチックの数を減らす方法をgnuplot

この図には、xticsとyticsが多すぎます。それらの半分をもらえますか?

私はこれと同様の方法で手動でチックを設定できることを知っています:

set xtics (1,2,4,8,16,32,64,128,256,512,1024)

しかし、それは一般的な解決策ではないと思います。すべての図に手動でチックを設定することはできません。私はそれらをたくさん持っています、そしてgnuplotコードはJavaを使って自動的に生成されます。

図のコードは次のとおりです。 https://dl.dropboxusercontent.com/u/45318932/gnuplot2.plt

Xチックとyチックの数を減らすのを手伝ってもらえますか?

enter image description here

6
Changwang Zhang

Gnuplotには、軸に必要なチックの数を明示的に設定し、それらを配置する場所をgnuplotに決定させるオプションはありません。 (本当にあったらいいのに。)

必要なオプションの1つは、statsコマンド(gnuplot 4.6以降)を使用して、データの範囲を確認することです。

ntics = 4

stats 'data.dat' using 1 name 'x' nooutput
stats 'data.dat' using 2 name 'y' nooutput
stats 'data.dat' using 3 name 'z' nooutput

set xtics x_max/ntics
set ytics y_max/ntics
set ztics z_max/ntics

チックを整数値にするかどうかを調整する必要があるかもしれませんが、それが一般的な考え方です。

11
andyras

何をしたいかに応じて、チックの数を設定するさまざまな方法があります。長さ2の固定セグメントの場合、ゼロから始まり32で終わります。

set xrange [0:32]
set xtics 0,2,32
plot sin(x)

enter image description here

指数関数的な増分が必要な場合は、次のことを試してください

set xrange [0:32]
set for [i=0:5] xtics (0,2**i)
plot sin(x)

enter image description here

または、対数目盛(この場合は基数2)を使用できます。

set xrange [1:32]
set logscale x 2
plot sin(x)

enter image description here

9
Miguel

同様の問題があり、多少丸みを帯びた数値を使用しながらデータが変更された場合に備えて、もう少し一般的に処理したいと考えていました。したがって、ヘルパー関数を作成しました。

endsinone(n) = strstrt(gprintf("%g", incrguess), "1")
getincr(range, maxincr, guess) = range/guess < maxincr ? guess : \
    (endsinone(guess) ? getincr(range, maxincr, 5*guess) : getincr(range, maxincr, 2*guess))

次に、軸の範囲、必要な最大の増分、および可能な限り最小の増分が何であるかについての非常に下限の推測を渡す必要があります。丸められた数値を維持するために、私の関数は、推測が1eNまたは5eNの形式で何らかの値Nに対して表現可能であると想定しています。つまり(50は良いので、0.0000001、505はそうではありません)。この関数を使用すると、次のようなことを行う必要があります

set xtics getincr(STATS_max, 6, 1e-9)

6ティック未満のincrを返し、STATS_MAX> 1e-9と仮定してそれらのいくつかがあるはずです。

0