Gnuplot
Grundläggande plottning av datafiler
Sök…
Introduktion
En av de viktigaste användbara funktionerna i gnuplot är möjligheten att plotta datafiler . Att plotta en datafil är verkligen enkelt med gnuplot , när du väl har öppnat programvaran från terminalen behöver du bara siffran kommandot plot 'file'
att få en automatisk tomt.
Först av allt, innan du planerar, måste du vara säker på att vara under samma katalog där datafilen är, annars får du så småningom en warning
.
Syntax
- plot datafile med kolumnuttryck med stil
Planera en enda datafil
Gnuplot- kommandot plot
(även endast p
) plottdataset med kolumner, i form av filen data_set.dat
nedan.
# Prototype of a gnuplot data set
# data_set.dat
# X - X^2 - 2*X - Random
0 0 0 5
1 1 2 15
1.4142 2 2.8284 1
2 4 4 30
3 9 6 26.46
3.1415 9.8696 6.2832 39.11
4 16 8 20
4.5627 20.8182 9.1254 17
5.0 25.0 10.0 25.50
6 36 12 0.908
Som du ser kan du skriva i din datauppsättning i flytande punktnotation. Nu är allt redo att göra dataplanen: genom att bara skriva
plot "data_set.dat"
gnuplot producerar en graf i din output
. Standardinställningarna använder de två första kolumnerna i din datafil, respektive x och y. För att specificera kolumnerna som ska plottas med using
specifikatorn
plot "data_set.dat" using 2:4
vilket betyder "plotta filen med hjälp av kolumn 2 som X och kolumn 4 som Y". Om din datauppsättning är en tredimensionell fil, använd bara splot
lägg till z-kolumnen
splot "data_set.dat" using 1:2:3
Det finns också annan stil (se gnuplot-dokumentation eller Välja en plottningsstil för ytterligare information) för att plotta poäng. Som sagt tidigare är standardstilen point
plot "data_set.dat" using 1:4 with point
vilket kommer att plotta samma sak som om du inte skriver with point
. En användbar stil för linespoint
är linespoint
, som uppenbarligen är "linjer + poäng". T.EX:
plot "data_set.dat" using 1:4 with linespoint
# the abbreviated form is completely equivalent:
# p "data_set.dat" u 1:4 w lp
Former för att plotta iteration
I det fall du har fler kolumner och vill rita dem alla i samma graf bara övergå till plot
funktionen något argument du föredrar, genom att separera dem med ett ,
:
p "data_set.dat" u 1:2 w lp,\
"data_set.dat" u 1:3 w lp,\
"data_set.dat" u 1:4 w lp
Hur som helst ibland kan det finnas för mycket kolumner för att skriva en efter en. I dessa fall blir slingan for
iteration mycket användbar:
p for [col = 2:4] "data_set.dat" using 1:col w lp
vilket ger utgången
Kortfattat ökar variabeln i slingan for
iteration, i detta fall col
, med ett beslutat steg (om inte specificerat = 1). Till exempel for [i = 0:6:2]
ökar i
från 0 till 6 i 2 steg: i = 0, 2, 4, 6
. Alla värden (start, stopp och steg) kastas till heltal.
* Rutnät
Rutnätet är ofta användbart när du planerar en datauppsättning. Lägga till en rutnätstyp
set grid
Plottar flera datafiler
Första metoden - sammankoppling av strängar
Den enklaste metoden för att plotta flera datafiler är att sätta in en for
loop i plot
för gnuplot. Förutsatt att du har N
filer namngivna i följd, dvs.
file_1.dat
file_2.dat
file_3.dat
...
file_N.dat
Utför kommandot
plot for[i = 1:N] "file_".i.".dat"
kommer att plotta alla filerna mellan file_1.dat
och file_N.dat
i samma graf.
Exempel med tre datafiler
Tabell över datasätt
X-Axlar | Y-Ax fil_1.dat | Y-Ax fil_2.dat | Y-Ax fil_3.dat |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 2 | 4 | 2 |
3 | 3 | 9 | 6 |
4 | 4 | 16 | 24 |
5 | 5 | 25 | 120 |
kommandon
set terminal postscript color noenhanced ##setting the term
set output "multiple_files.ps"
set key center ##legend placement
plot [1:5][1:120] \
for [i = 1:3] "file_".i.".dat" \
pointsize 1.3 linecolor i+4 \
title "file\_".i.".dat" \
with linespoint
Slingan börjar med for [i = 1:3] "file_".i.".dat"
och kör plot
tills den når i = 3
. .i.
är det sammankopplade numret.
title "file\_".i.".dat"
har skrivits med \
för att få symbolen _
i filernas namn att visas som en understruk snarare än ett prenumeration , och noenhanced
specificer är grundläggande för att få detta resultat .
Det slutliga resultatet visas nedan
Andra metoden - Använd sprintf
funktion
En annan möjlig väg att följa är att använda sprintf
funktionen som fungerar i princip samma som C-språkets sprintf
. Rätt syntax, från gnuplot 5.1-dokumentationen är
sprintf("format", x, y, ...)
Ett kort exempel klargör varje tvivel.
file_name(n) = sprintf("file_%d.dat", n)
plot for[i = 1:N] file_name(i) title file_name(i)