2012-12-13 14 views
7

używam „gnuplot” wykreślić wykres liniowy z punktem:gnuplot: Jak zwiększyć szerokość moim wykresie

set style data linespoints 
set xlabel "number" 

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

Jak mogę zwiększyć szerokość mojego wykresu tak, że jak mam więcej "x", chcę, aby mój wykres był bardziej prostokąta zamiast kwadratu?

Jak mogę zwiększyć interwał mojej "osi Y"? teraz, po prostu narysuj znak na każde 50 na mojej osi Y?

Odpowiedz

11

Brzmi to jak chcesz, aby dane wyjściowe do dynamicznie dopasuj rozmiar do wykreślanych danych. Oto skrypt, który to robi:

#!/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 

Dla tych przykładowych danych:

0 50 
50 150 
100 400 
150 500 
200 300 

uzyskać następujące działki:

enter image description here

Chodzi o placu, jak powinno (zdefiniowałem 100 jednostek na x, aby były równe 250 jednostkom y, a dane mieszczą się w zakresie [(0,200), (50,500)]). Jeśli dodać kolejny punkt danych (400,300), plik wyjściowy jest szerszy, zgodnie z oczekiwaniami:

enter image description here

Aby odpowiedzieć na inne pytanie, można ustawić y tic przyrost sposób:

set ytics <INCREMENT> 

Powyższy skrypt podaje przykład.

+0

Nota boczna: określenie rozmiaru w poleceniu terminalu ('set terminal png size ...') definiuje rozmiar rzeczywistego pliku wyjściowego, a polecenie 'set size ratio ' ustawia współczynnik kształtu obszaru w obrębie wyjścia gdzie jest naniesiony wykres. Zrobiłem oba, aby upewnić się, że proporcje będą spójne. – andyras

0

zestaw XRange [:]

zestaw yrange [:]

pomocą tych 2 polecenia do określenia 'wielkości' z wykresu;)

+0

Nie. Chcę zmienić "wymiar" wykresu. Zawsze daje mi "kwadrat". Chcę, aby oś X była dłuższa niż oś Y. – michael

3

Aby dodać do dyskusji tutaj, istnieje również set size ratio ..., dzięki czemu można ustawić współczynnik kształtu wydruku.

Poniżej znajduje się fragment help set size:

ratio powoduje gnuplot próby utworzenia wykresu o współczynniku kształtu (stosunek długości osi y na długości oś x) w części z działki określone przez <xscale> i <yscale>.

Znaczenie ujemnej wartości dla jest różne. Jeśli = -1, gnuplot próbuje ustawić skale tak, aby jednostka miała taką samą długość zarówno na x jak i na osiach y (na przykład dla danych geograficznych). Jeśli = -2, jednostka na y ma dwa razy większą długość niż jednostka na x, i tak dalej.

Aby to naprawdę działa, prawdopodobnie będziesz musiał ustawić sterownik wyjściowy do jakiejś rozsądnej wielkości:

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

czyli

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

To wszystko jest zależne od terminalu, tak warto sprawdzić pomoc terminalu, aby zobaczyć, jakich jednostek używa, itp.

Powiązane problemy