web-dev-qa-db-ja.com

gnuplot:グラフの幅を広げる方法

'gnuplot'を使用して、点のある折れ線グラフをプロットしています。

set style data linespoints
set xlabel "number"

set ylabel "Dollars"
set yrange [0:250]

グラフの幅を増やすにはどうすればよいですか。「x」が多いほど、グラフを正方形ではなく長方形にしたいのですが。

また、「y軸」の間隔を増やすにはどうすればよいですか?今、それは私のy軸の50ごとにマークを描くだけですか?

10
michael

プロットされているデータに合わせて出力のサイズを動的に調整したいようです。これを行うスクリプトは次のとおりです。

#!/usr/bin/env gnuplot

# don't make any output just yet
set terminal unknown

# plot the data file to get information on ranges
plot 'data.dat' title 'My Moneys'

# span of data in x and y
xspan = GPVAL_DATA_X_MAX - GPVAL_DATA_X_MIN
yspan = GPVAL_DATA_Y_MAX - GPVAL_DATA_Y_MIN

# define the values in x and y you want to be one 'equivalent:'
# that is, xequiv units in x and yequiv units in y will make a square plot
xequiv = 100 
yequiv = 250 

# aspect ratio of plot
ar = yspan/xspan * xequiv/yequiv

# dimension of plot in x and y (pixels)
# for constant height make ydim constant
ydim = 200 
xdim = 200/ar

# set the y tic interval
set ytics 100 

# set the x and y ranges
set xrange [GPVAL_DATA_X_MIN:GPVAL_DATA_X_MAX]
set yrange [GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX]

# set the labels
set title 'Dollars in buckets'
set xlabel 'number'
set ylabel 'Dollars'

set terminal png size xdim,ydim
set output 'test.png'
set size ratio ar

set style data linespoints

replot

これらのサンプルデータの場合:

0 50
50 150 
100 400 
150 500 
200 300

次のプロットが表示されます。

enter image description here

本来あるべき正方形です(xの100単位をyの250単位に等しく定義し、データは[(0,200)、(50,500)]の範囲に及びます)。別のデータポイント(400,300)を追加すると、予想どおり、出力ファイルの幅が広くなります。

enter image description here

他の質問に答えるために、次のようにytic増分を設定できます。

set ytics <INCREMENT>

上記のスクリプトは例を示しています。

13
andyras

ここでの議論に追加するために、プロットのアスペクト比を設定できるようにset size ratio ...もあります。

help set sizeからの抜粋は次のとおりです。

ratioにより、gnuplotは、<xscale>で指定されたプロットの部分内で、アスペクト比(y軸の長さとx軸の長さの比率)のグラフを作成しようとします。 <yscale>

の負の値の意味は異なります。 = -1の場合、gnuplotは、単位がx軸とy軸の両方で同じ長さになるようにスケールを設定しようとします(たとえば、地理データに適しています)。 = -2の場合、yの単位はxの単位の2倍の長さになります。

これを実際に機能させるには、出力ドライバーを適切なサイズに設定する必要があります。

set term png size 800,400 #800 pixels by 400 pixels

または:

set term post size 8,4 #8 inches by 4 inches

これはすべて端末に依存するため、端末のヘルプを調べて、使用しているユニットなどを確認する価値があります。

5
mgilson

xrange [:]を設定します

set yrange [:]

これらの2つのコマンドを使用して、グラフの「サイズ」を定義します;)

0
user1902435