Gibt es eine Möglichkeit, Daten iterativ aus mehreren Dateien abzurufen und sie in demselben Diagramm in gnuplot zu zeichnen? Angenommen, ich habe Dateien wie data1.txt, data2.txt ...... data1000.txt; jede hat die gleiche Anzahl von Spalten. Jetzt könnte ich so etwas schreiben wie-
plot "data1.txt" using 1:2 title "Flow 1", \
"data2.txt" using 1:2 title "Flow 2", \
.
.
.
"data1000.txt" using 1:2 title "Flow 6"
Aber das wäre wirklich unpraktisch. Ich habe mich gefragt, ob es eine Möglichkeit gibt, den Handlungsteil in Gnuplot zu durchlaufen .
bash
Funktion in der Antwort untenAntworten:
Es gibt sicher (in Gnuplot 4.4+):
Die Variable
i
kann als Variable oder als Zeichenfolge interpretiert werden, sodass Sie so etwas tun könnenwenn Sie möchten, dass Linien voneinander versetzt sind.
Geben Sie
help iteration
in die gnuplot-Befehlszeile ein, um weitere Informationen zu erhalten.Lesen Sie auch die Antwort von @ DarioP zur
do for
Syntax. das gibt Ihnen etwas näher an einer traditionellenfor
Schleife.quelle
Schauen Sie sich auch den
do { ... }
Befehl seit Gnuplot 4.6 an, da er sehr mächtig ist:http://www.gnuplotting.org/gnuplot-4-6-do/
quelle
help do
.Ich habe das Skript all.p.
Hier sind die beiden letzten Zeilen wörtlich und nicht heuristisch. Dann renne ich
Wechseln
*.dat
Sie zu Ihrem Dateityp oder fügen Sie Dateitypen hinzu.Nächster Schritt: Fügen Sie diese Zeile zu ~ / .bashrc hinzu
und legen Sie Ihre Datei in
all.p
Ihr Home-Verzeichnis und voila. Sie können alle Dateien in einem beliebigen Verzeichnis zeichnen, indem Sie p eingeben und eingeben.BEARBEITEN Ich habe den Befehl geändert, weil er nicht funktioniert hat. Zuvor enthielt es
list(i)=word(system(ls -1B *.dat),i)
.quelle
list=system(ls -1B *.dat)
stattdessen schreiben .list=system('ls -1B *.dat')
Verwenden Sie Folgendes, wenn Sie diskrete Spalten zum Zeichnen in einem Diagramm haben
quelle
Ich wollte Platzhalter verwenden, um mehrere Dateien zu zeichnen, die sich oft in verschiedenen Verzeichnissen befinden, während ich von einem beliebigen Verzeichnis aus arbeite. Die Lösung, die ich gefunden habe, bestand darin, die folgende Funktion in zu erstellen
~/.bashrc
und verwenden Sie es zB wie
plo *.dat ../../dir2/*.out
, um alle.dat
Dateien im aktuellen Verzeichnis und alle.out
Dateien in einem Verzeichnis zu zeichnen , das sich zufällig auf einer höheren Ebene befindet und aufgerufen wirddir2
.quelle
plo() { [[ $# -eq 0 ]] && echo "Usage plo file1 file2 ..." || { .... } }
, um zu vermeiden,gnuplot
ohne Dateien anzurufen .Hier ist der alternative Befehl:
quelle