2012-12-13 3 views
7

I ‚gnuplot‘ bin mit einem Liniendiagramm mit Punkt dargestellt werden soll:gnuplot: Wie die Breite meines Graphen erhöhen

set style data linespoints 
set xlabel "number" 

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

wie kann ich die Breite meines Graph erhöhen, so dass ich mehr 'x', ich möchte, dass mein Diagramm mehr aus einem Rechteck als aus einem Quadrat besteht?

Und wie kann ich das Intervall meiner 'Y-Achse' vergrößern? jetzt, es ist nur eine Markierung für jede 50 in meiner y-Achse?

Antwort

11

Es klingt wie Sie möchten, dass Ihre Ausgabe dynamisch Passen Sie die Größe an die geplotteten Daten an. Hier ist ein Skript, das:

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

Für diese Beispieldaten:

0 50 
50 150 
100 400 
150 500 
200 300 

ich die folgende Handlung:

enter image description here

Es ist etwa quadratisch, wie es sein sollte (Ich habe 100 Einheiten in x definiert, um 250 Einheiten in y zu entsprechen, und die Daten umfassen den Bereich [(0,200), (50,500)]). Wenn ich einen weiteren Datenpunkt (400.300) hinzufügen, ist die Ausgabedatei breiter, wie erwartet:

enter image description here

Um Ihre andere Frage zu beantworten, können Sie die y tic Schritt gesetzt so:

set ytics <INCREMENT> 

Das obige Skript gibt ein Beispiel.

+0

Randnotiz: Die Größe im Terminal-Befehl ('set terminal png size ...') definiert die Größe der tatsächlichen Ausgabedatei und der Befehl 'set size ratio ' legt das Seitenverhältnis des Bereichs innerhalb der Ausgabe fest wo die Handlung geplottet wird. Ich habe beides getan, um sicherzustellen, dass das Seitenverhältnis konsistent ist. – andyras

0

Satz xrange [:]

Satz yrange [:]

diese 2 Befehle Verwenden Sie die 'Größe' des Diagramms zu definieren;)

+0

Nein. Ich möchte die "Dimension" des Graphen ändern. Es gibt mir immer ein 'Quadrat'. Ich möchte, dass die X-Achse länger als die Y-Achse ist. – michael

3

Um die Diskussion hier hinzuzufügen, gibt es auch set size ratio ..., so dass Sie das Seitenverhältnis Ihrer Handlung einstellen können.

Hier ist ein Ausschnitt aus help set size:

ratiognuplot bewirkt, um zu versuchen, ein Diagramm mit einem Seitenverhältnis von (das Verhältnis der Y-Achsenlänge zu der x-Achsenlänge) innerhalb des Teils zu erstellen von das durch <xscale> und <yscale> spezifizierte Plot.

Die Bedeutung eines negativen Werts für ist unterschiedlich. Wenn = -1, versucht gnuplot , die Maßstäbe so einzustellen, dass die Einheit sowohl auf den Achsen x als auch y (z. B. für geografische Daten) die gleiche Länge hat. Wenn = -2, hat die Einheit auf y die doppelte Länge der Einheit auf x und so weiter.

Für diese wirklich arbeiten, werden Sie wahrscheinlich den Ausgangstreiber zu einer vernünftigen Größe benötigen setzen:

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

oder:

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

Das ist alles Endgerät abhängig, so Es lohnt sich, die Hilfe des Terminals nachzuschlagen, um zu sehen, welche Einheiten er verwendet usw.