
Sicherlich haben viele von Ihnen, die in westlichen wissenschaftlichen Publikationen blättern, schöne und einfache Grafiken gesehen. Vielleicht haben sich einige von Ihnen gefragt, wie diese Experten ihre Daten visualisieren. Und jetzt gibt es ein wunderschönes und sehr einfaches Grafiktool, das fast überall zu finden ist: Windows, Linux, Android und andere, ich bin sicher, es gibt es sogar unter DOS. Es ist zuverlässig, einfach und ermöglicht es Ihnen, alle tabellarischen Textdaten in Form von schönen Grafiken darzustellen.
Warum Gnuplot?
Wenn Sie bereits meine Artikel " Gleichzeitiger Geschwindigkeitstest auf mehreren LTE-Modems ", " Harmonische Schwingungen ", " Erstellen eines Hardware-Zufallszahlengenerators ") gelesen haben , sind Ihnen möglicherweise schöne Grafiken aufgefallen.

Grafik aus dem Beitrag über den Zufallszahlengenerator

Bild aus dem Beitrag über Speetest-Modems Die
Grafiken sind einfach und cool. Der wertvollste Vorteil von gnuplot ist, dass Sie zum Plotten nur eine Textdatei mit den Rohdaten, gnuplot auf Ihrem bevorzugten Betriebssystem (OpenWRT) und Ihrem bevorzugten
Auf den ersten Blick scheint es, dass Gnuplot für das Plotten schwieriger zu verwenden ist als MS Excel. Aber es scheint nur so, dass die Eingabeschwelle etwas höher ist (Sie können nicht mit der Maus darauf klicken, Sie müssen die Dokumentation hier lesen), aber in der Praxis ist es viel einfacher und bequemer. Ich habe einmal ein Drehbuch geschrieben und es mein ganzes Leben lang benutzt. Es ist wirklich viel schwieriger für mich, ein Diagramm in Exel zu zeichnen, wo nicht alles logisch ist, als in Gnuplot. Der Hauptvorteil von gnuplot besteht darin, dass Sie es in Ihre Programme einbetten und Daten im laufenden Betrieb visualisieren können. Auch gnuplot erstellt ohne Probleme ein Diagramm aus einer 30-Gigabyte-Datei mit statistischen Daten, während Exel einfach abstürzte und es nicht öffnen konnte.
Zu den Pluspunkten von gnuplot gehört die Tatsache, dass es in Standardprogrammiersprachen leicht in den Code integriert werden kann. Es gibt fertige Bibliotheken für viele Sprachen, ich persönlich bin auf PHP und Python gestoßen. So können Sie Diagramme direkt aus Ihrem Programm erstellen.
Zum Beispiel werde ich sagen, dass meine gute Freundin, als sie ihre Dissertation schrieb, Gnuplot beherrschte (auf meinen Vorschlag). Sie ist nie ein Technikfreak, aber sie hat es an einem Abend herausgefunden. Danach erstellte sie nur dort Diagramme, und das Niveau ihrer Arbeit begann sich vor dem Hintergrund der Kollegen, die Excel verwendeten, positiv zu unterscheiden. Ein Indikator für die hohe Qualität der wissenschaftlichen Arbeit sind für mich persönlich die Grafiken, die von speziellen Programmen erstellt wurden.
Somit ist Gnuplot einfach, zugänglich und schön. Gehen wir weiter.
Gnuplot - Anwendung
Es gibt zwei Möglichkeiten, mit gnuplot zu arbeiten: Befehlsmodus und Skriptausführungsmodus. Ich empfehle, den zweiten Modus sofort zu verwenden, da er am bequemsten und schnellsten ist. Darüber hinaus ist die Funktionalität absolut gleich.
Zu Beginn führen wir gnuplot im Befehlsmodus aus. Führen Sie gnuplot über die Befehlszeile oder auf die für Ihr Betriebssystem verfügbare Weise aus. Sie können diesen Artikel lesen Training nicht einmal beginnen, aber direkt von der ersten Hilfe Befehl . Sie wird eine großartige Hilfe zeigen und Sie können weiter gehen. Aber wir werden die Höhepunkte durchgehen.
Das Diagramm wird mit dem Befehl plot gezeichnet . Als Befehlsparameter können Sie eine Funktion oder den Namen der Datendatei angeben. Sowie welche Datenspalte verwendet werden soll und wie die Punkte verbunden werden, wie sie bezeichnet werden usw. Lassen Sie uns veranschaulichen.
gnuplot> plot sin(x)

Nach dem Ausführen des Befehls wird ein Fenster geöffnet, in dem ein Sinusdiagramm mit Standardsignaturen angezeigt wird. Lassen Sie uns dieses Diagramm verbessern und gleichzeitig einige zusätzliche Optionen herausfinden.
Lassen Sie uns die Achsen signieren.
set xlabel "X"
Gibt die Beschriftung für die Abszissenachse an.
set ylabel "Y"
Gibt die Beschriftung für die Ordinatenachse an.
Fügen wir ein Raster hinzu, um zu zeigen, wo das Diagramm erstellt wird.
set grid
Ich mag die Tatsache nicht, dass die Sinuskurve auf der Ordinatenachse am Ende des Diagramms liegt, daher werden wir die Grenzen der Werte festlegen, auf die das Diagramm beschränkt wird.
set yrange [-1.1:1.1]
Somit wird der Graph vom Minimalwert von -1,1 bis zum Maximalwert von 1,1 gezeichnet.
Ebenso habe ich den Bereich für die Abszisse so eingestellt, dass nur eine Periode der Sinuskurve sichtbar ist.
set xrange[-pi:pi]
Wir müssen unserem Zeitplan einen Titel hinzufügen, damit alles Feng Shui ist.
set title "Gnuplot for habr" font "Helvetica Bold, 20"
Beachten Sie, dass Sie Schriftarten und deren Größe festlegen können. In der Gnuplot-Dokumentation finden Sie Informationen darüber, welche Schriftarten verwendet werden können.
Und schließlich zeichnen wir zusätzlich zum Sinus in der Grafik auch den Cosinus und legen den Linientyp und seine Farbe fest. Und füge auch Legenden hinzu, was zeichnen wir?
plot sin(x) title "sinux" lc rgb "red", cos(x) title "cosinus" lc rgb "green"
Hier zeichnen wir zwei Grafiken auf einer Leinwand in Rot und Grün. Im Allgemeinen gibt es viele Optionen für Linien (gepunktete Linie, Strich, durchgezogene Linie), Linienbreiten und Farben. Sowie Arten von Punkten. Mein Ziel ist es nur, die Möglichkeiten aufzuzeigen. Lassen Sie uns alle Befehle auf einen Stapel bringen und nacheinander ausführen. Geben Sie reset ein, um die vorherigen Einstellungen zurückzusetzen.
reset
set xlabel "X"
set ylabel "Y"
set grid
set yrange [-1.1:1.1]
set xrange[-pi:pi]
set title "Gnuplot for habr" font "Helvetica Bold, 20"
plot sin(x) title "sinux" lc rgb "red", cos(x) title "cosinus" lc rgb "green"
Als Ergebnis bekommen wir genau diese Schönheit.

Es ist keine Schande mehr, den Zeitplan in einer wissenschaftlichen Zeitschrift zu veröffentlichen.
Wenn Sie das alles ehrlich nach mir wiederholt haben, haben Sie vielleicht bemerkt, dass die manuelle Eingabe jedes Mal, selbst das Kopieren, irgendwie nicht üblich ist. Aber ist das ein fertiges Skript? Also machen wir's!
Beenden Sie den Befehlsmodus mit dem Befehl exit und erstellen Sie eine Datei:
vim testsin.gpi
#! /usr/bin/gnuplot -persist
set xlabel "X"
set ylabel "Y"
set grid
set yrange [-1.1:1.1]
set xrange[-pi:pi]
set title "Gnuplot for habr" font "Helvetica Bold, 20"
plot sin(x) title "sinux" lc rgb "red", cos(x) title "cosinus" lc rgb "green"
Wir machen es ausführbar und führen es aus.
chmod +x testsin.gpi
./testsin.gpi
Als Ergebnis erhalten wir das gleiche Fenster mit Diagrammen. Wenn Sie dem Titel kein "-persist" hinzufügen, wird das Fenster automatisch geschlossen, nachdem das Skript ausgeführt wurde.
Es ist jedoch oft nicht sehr notwendig, ein Fenster zu erstellen, und es ist nicht immer bequem, es zu verwenden, und Sie können in einem Betriebssystem ohne GUI arbeiten. Viel häufiger müssen Sie Grafikdateien empfangen. Persönlich bevorzuge ich das Postscript-Vektorformat, da Sie mit einer großen Anzahl von Punkten verschiedene Teile des Diagramms vergrößern können, ohne an Qualität zu verlieren. Außerdem aktualisiert der Viewer unter Linux das Fenster automatisch mit dem Diagramm, wenn die Postscript-Datei geändert wird, was ebenfalls sehr praktisch ist.
Um Daten in eine Datei und nicht auf den Bildschirm auszugeben, müssen Sie das Terminal neu zuweisen.
set terminal png size 800, 600
set output "result.png"
Wie Sie vielleicht erraten haben, geben wir den Dateityp und seine Auflösung an und dann den Dateinamen. Fügen Sie diese beiden Zeilen am Anfang unseres Skripts hinzu, und wir erhalten dieses Bild im aktuellen Ordner.

Um in Postscript zu speichern, müssen Sie die folgenden Befehle verwenden:
set terminal postscript eps enhanced color solid
set output "result.ps"
Echte Daten
Sinus, Cosinus sind sicherlich cool zu zeichnen, aber das Zeichnen realer Daten ist viel interessanter! Ich möchte Sie an eine kürzlich durchgeführte Aufgabe erinnern, über die ich einen Artikel geschrieben habe - Diagramme der Internetgeschwindigkeit über lange Zeiträume. Das Datenformat war wie folgt.
Operator; #Prüfung; Datum; Zeit; Koordinaten; Mb / s herunterladen; Mb / s hochladen; Klingeln; Testserver
Rostelecom; 0; 21.05.2020; 09: 56: 00; NA, NA; 3.7877656948451692; 5.231226008184113; 132.227; MaximaTelecom (Moskau) [0,12 km]: 132,227 ms
Rostelecom; 1; 21.05.2020; 10: 01: 02; NA, NA; 5.274994541394363; 5.1088572634075815; 127.52; MaximaTelecom (Moskau) [0.12 km]: 127.52 ms
Rostelecom; 2; 05.21.2020; 10: 04: 35; NA, NA; 3.61044819424076; 4.6241321802119; 0,12 km]: 135,456 ms
Es ist ersichtlich, dass wir ein Semikolon als Trennzeichen haben. Wir müssen die Download-Geschwindigkeit und die Upload-Geschwindigkeit je nach Zeit anzeigen. Wenn Sie auf Datum und Uhrzeit achten, befinden sich diese in verschiedenen Spalten. Jetzt erzähle ich Ihnen, wie ich das umgangen habe. Ich werde sofort das Skript zitieren, mit dem das Diagramm erstellt wurde.
#! /usr/bin/gnuplot -persist
set terminal postscript eps enhanced color solid
set output "Rostelecom.ps"
#set terminal png size 1024, 768
#set output "Rostelecom.png"
set datafile separator ';'
set grid xtics ytics
set xdata time
set timefmt '%d.%m.%Y;%H:%M:%S'
set ylabel "Speed Mb/s"
set xlabel 'Time'
set title "Rostelecom Speed"
plot "Rostelecom.csv" using 3:6 with lines title "Download", '' using 3:7 with lines title "Upload"
set title "Rostelecom 2 Ping"
set ylabel "Ping ms"
plot "Rostelecom.csv" using 3:8 with lines title "Ping"
Am Anfang der Datei legen wir die Postscript-Ausgabedatei fest (oder ggf. PNG).
Datendateientrennzeichen setzen ';' - Wir setzen das Trennzeichen. Spalten werden standardmäßig durch Leerzeichen getrennt, aber die CSV-Datei bietet viele Trennzeichenoptionen, und Sie sollten in der Lage sein, alle zu verwenden.
set grid xtics ytics - legt das Gitter fest (Sie können das Gitter nur entlang einer Achse einstellen).
Die Einstellung der xdata-Zeit ist ein wichtiger Punkt. Wir sprechen über die Tatsache, dass auf der X-Achse das Datenformat die Zeit ist.
set timefmt '% d.% m.% Y;% H:% M:% S ' - setze das Zeitdatenformat . Bitte beachten Sie, dass das Spaltenbegrenzungszeichen (";") im Zeitformat enthalten ist, sodass wir zwei Spalten als eine behandeln.
Wir setzen die Beschriftungen der Achsen und des Graphen. Dann erstellen wir ein Diagramm.
Plotten Sie "Rostelecom.csv" mit 3: 6 mit dem Zeilentitel "Download", '' mit 3: 7 mit dem Zeilentitel "Upload" - wir zeichnen sowohl die Download- als auch die Upload- Geschwindigkeit in einem Diagramm. Die Verwendung von 3: 6 ist die Spaltennummer in unserer Quelldatendatei, aus der wir erstellen (X: Y).
Dann zeichnen wir das Ping-Diagramm auf die gleiche Weise. Das resultierende Diagramm sieht folgendermaßen aus.

Dies ist ein Screenshot aus dem Postscript. Gerade Linien in der Grafik sind darauf zurückzuführen, dass Datenlücken bestehen. Hier ist ein sehr reales Beispiel für das Zeichnen.
Und 3D ???
Willst du 3D? Ich habe sie!
Ich habe lange überlegt, welches Beispiel für dreidimensionale Grafiken ich geben soll, und mir nichts Besseres einfallen lassen, als das Bild zu visualisieren. In der Tat ist ein Bild im Wesentlichen ein dreidimensionaler Graph, bei dem die Pixelhelligkeit die z-Koordinate ist. Also lass uns einen kleinen Hooligan spielen.
Machen Sie das berühmteste Foto von Einstein.

Und lassen Sie uns daraus ein Diagramm machen. Konvertieren Sie dazu das pgm-ASCII-Format und entfernen Sie alle Leerzeichen, indem Sie es mit einem so einfachen Befehl durch eine neue Zeile ersetzen.
convert Einstein.jpg -compress none pgm:- | tr -s '\012\015' ' ' | tr -s ' ' '\012'> outfile.pgm
Für diejenigen, die nicht verstehen, was hier passiert, erkläre ich: Wir verwenden imagemagic, um das Bild in das pgm-Format zu konvertieren, und verwenden dann tr, um den Wagenrücklauf durch eine neue Zeile in ein Leerzeichen zu ersetzen, und dann alle Leerzeichen in einen Wagenrücklauf und speichern alles in outfile. pgm. Jeder, der Schwierigkeiten hat, kann die Datei in gimp öffnen und als pgm-ASCII exportieren.
Dann öffnen wir die resultierende Datei mit unserem bevorzugten Editor
f = open('outfile.pgm')
for x in range(408):
for y in range(325):
line = f.readline()
print ('%d %d %s' % (x, y, line)),
f.close()
Speichern Sie dies als convert.py und führen Sie Folgendes aus:
python convert.py > res.txt
Das war's, jetzt enthält res.txt die Koordinaten von Einstein ... Hmm, oder besser gesagt die Koordinaten seines Bildes. Nun, im Allgemeinen kommt man auf die Idee :).
…
406 317 60
406 318 54
406 319 30
406 320 41
406 321 84
406 322 101
406 323 112
406 324 119
407 0 128
407 1 53
407 2 89
407 3 95
407 4 87
...
Beispieldatei.
Das Skript zum Erstellen dieser Schönheit sieht so aus.
#! /usr/bin/gnuplot -persist
#set terminal png size 1024, 768
#set output "result.png"
#set grid xtics ytics
#set terminal postscript eps enhanced color solid
#set output "result.ps"
set title "Albert Einstein"
set palette gray
set hidden3d
set pm3d at bs
set dgrid3d 100,100 qnorm 2
set xlabel "X" font "Helvetica Bold ,18"
set ylabel "Y" rotate by 90 font "Helvetica Bold ,18"
set zlabel "Z" font "Helvetica Bold ,18"
set xrange [0:408]
set yrange [0:325]
set zrange [-256:256]
unset key
splot "./res.txt" with l
Bevor wir das Skript analysieren, empfehle ich dringend, dass Sie die Skriptzeilen im Befehlsmodus ausführen, damit Sie das Diagramm mit der Maus drehen können (natürlich ohne Angabe des festgelegten Terminals). Das ist sehr cool!
Zunächst legen wir den Ausgabedatentyp sowie die Datengrenzen fest. Die Ränder richten sich nach der Größe des Bildes, und außerdem habe ich von unten 256 Zeichen entlang der Z-Achse beabstandet, damit die Projektion des Bildes sichtbar ist. Als nächstes leiten wir das Diagramm und beschriften die Achsen. Verwenden des Befehls "Nicht gesetzte Taste" - Ich deaktiviere die Legenden (wird in der Tabelle nicht benötigt). Und hier kommt die wahre Magie!
Palette grau einstellen - wir legen die Palette fest. Wenn diese Option standardmäßig beibehalten wird, wird das Diagramm wie auf einer Wärmebildkamera gefärbt. Je höher, je gelber der Fleck, desto niedriger desto dunkler das Rot.
setze hidden3d- Dehnt sozusagen die gekrümmte Oberfläche (entfernt die Linien) und bildet so eine schöne konvexe Oberfläche.
setze pm3d auf bs - aktiviere den 3D- Datenzeichnungsstil , der Daten mit einer Gitterkoordinate und Farbe zeichnet. Lesen Sie mehr in der Dokumentation, eine detailliertere Beschreibung würde den Rahmen des Artikels sprengen.
setze dgrid3d 100.100 qnorm 2 - setze die Größe der Gitterzellen auf 100x100 und das Anti-Aliasing zwischen den Zellen. Der Wert 100x100 ist bereits sehr groß und das Programm ist sehr langsam. qnorm 2 ist Anti-Aliasing (Dateninterpolation zwischen Zellen).
splot "./res.txt" mit l - zeichne das resultierende Diagramm. "Mit l" bedeutet, den Graphen mit Linien zu zeichnen. Dies ist ein kleiner Hack, da die Punkte in der Grafik sichtbar sind (kleine Punkte können gesetzt werden).
Nach dem Start warten wir einige Zeit und erhalten ein polygonales "Basrelief". Versuchen Sie, mit den Einstellungen zu experimentieren, um andere Renderoptionen zu erhalten.

Das Bild befindet sich nach dem Drehen im Befehlsmodus.
Eine Anekdote fällt mir sofort ein.
Wie finde ich den Leninplatz?
Nur eine ungebildete Person wird diese Frage beantworten, dass es notwendig ist, die Höhe von Lenin mit der Breite von Lenin zu multiplizieren.
Eine gebildete Person weiß, ein Integral über eine Oberfläche zu nehmen.
Verwenden von Gnuplot in Ihren Programmen
Das Beispiel stammt aus dem Stackoverflow mit meinen geringfügigen Änderungen.
Der Code generiert eine Textdatei und bewirkt ständig, dass das Diagramm neu erstellt wird. Ich werde den Code unter dem Spoiler anbringen, um den Artikel nicht zu zerreißen.
Beispiel C-Code mit gnuplot
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
float s=10.;
float r=28.;
float b=8.0/3.0;
/* Definimos las funciones */
float f(float x,float y,float z){
return s*(y-x);
}
float g(float x,float y,float z){
return x*(r-z)-y;
}
float h(float x,float y,float z){
return x*y-b*z;
}
FILE *output;
FILE *gp;
int main(){
gp = popen("gnuplot -","w");
output = fopen("lorenzgplot.dat","w");
float t=0.;
float dt=0.01;
float tf=30;
float x=3.;
float y=2.;
float z=0.;
float k1x,k1y,k1z, k2x,k2y,k2z,k3x,k3y,k3z,k4x,k4y,k4z;
fprintf(output,"%f %f %f \n",x,y,z);
fprintf(gp, "splot './lorenzgplot.dat' with lines \n");
/* Ahora Runge Kutta de orden 4 */
while(t<tf){
/* RK4 paso 1 */
k1x = f(x,y,z)*dt;
k1y = g(x,y,z)*dt;
k1z = h(x,y,z)*dt;
/* RK4 paso 2 */
k2x = f(x+0.5*k1x,y+0.5*k1y,z+0.5*k1z)*dt;
k2y = g(x+0.5*k1x,y+0.5*k1y,z+0.5*k1z)*dt;
k2z = h(x+0.5*k1x,y+0.5*k1y,z+0.5*k1z)*dt;
/* RK4 paso 3 */
k3x = f(x+0.5*k2x,y+0.5*k2y,z+0.5*k2z)*dt;
k3y = g(x+0.5*k2x,y+0.5*k2y,z+0.5*k2z)*dt;
k3z = h(x+0.5*k2x,y+0.5*k2y,z+0.5*k2z)*dt;
/* RK4 paso 4 */
k4x = f(x+k3x,y+k3y,z+k3z)*dt;
k4y = g(x+k3x,y+k3y,z+k3z)*dt;
k4z = h(x+k3x,y+k3y,z+k3z)*dt;
/* Actualizamos las variables y el tiempo */
x += (k1x/6.0 + k2x/3.0 + k3x/3.0 + k4x/6.0);
y += (k1y/6.0 + k2y/3.0 + k3y/3.0 + k4y/6.0);
z += (k1z/6.0 + k2z/3.0 + k3z/3.0 + k4z/6.0);
/* finalmente escribimos sobre el archivo */
fprintf(output,"%f %f %f \n",x,y,z);
fflush(output);
usleep(10000);
fprintf(gp, "replot \n");
fflush(gp);
t += dt;
}
fclose(gp);
fclose(output);
return 0;
}
Der Code funktioniert sehr einfach, wir öffnen eine Pipe:
gp = popen("gnuplot -","w");
Dies ähnelt der vertikalen Leiste in Bash, wenn wir nach einem Befehl einen weiteren Befehl nur innerhalb des Programms schreiben. Wir schreiben die Daten in die Datei lorenzgplot.dat. Rufen Sie den Befehl splot in gnuplot einmal auf:
fprintf(gp, "splot './lorenzgplot.dat' with lines \n");
Wenn wir dann einen neuen Punkt hinzufügen, erstellen wir das Diagramm neu.
fprintf(gp, "replot \n");
Als Ergebnis erhalten wir eine sehr schöne langsame Konstruktion des Lorenz Attractor. Unten sehen Sie ein Video, das vor fast zehn Jahren mit einer alten Kamera aufgenommen wurde. Schwören Sie also nicht zu viel. Das Wichtige im Video ist, dass alles auf einer so alten Hardware wie dem Nokia N800 hervorragend funktioniert. Es ist wünschenswert, es ohne Ton zu sehen.
Es ist wichtig zu verstehen, dass der Replot- Befehl Speicher- und Prozessorzeit sehr gut beansprucht , das heißt, ein solches Plotten verlangsamt das System nicht so sehr. Bei aller Liebe zum Gnuplot ist dies nicht der beste Weg, ihn zu benutzen. Ein weiteres Problem ist, dass dieses Fenster nicht geschlossen oder verschoben werden kann.
Fazit
Schließlich möchte ich ein Video zeigen, in dem ich Hunderte von Diagrammen der zufälligen logarithmischen Verteilung von Registrierungen radioaktiver Partikel gesammelt habe, reale Daten aus einer Studie. Video kann und sollte mit Ton angesehen werden.
In diesem Artikel konnte ich nicht einmal einen tausendsten Teil der Fähigkeiten dieses Plotters beschreiben, außer dass ich den Leser ein wenig mit diesem Programm vertraut gemacht habe. Als nächstes sollten Sie selbst nach Beispielen suchen und die Dokumentation auf der offiziellen Website gnuplot.sourceforge.net oder www.gnuplot.info lesen . Schauen Sie sich unbedingt die Beispiele an, es gibt viele interessante und nützliche Dinge.
Zunächst kann ich auch eine kurze Einführung in Gnuplot (rus) empfehlen . Ich bin aufrichtig überrascht, dass solch ein wunderbares Programm nicht an allen technischen Universitäten auf dem Niveau von Latex studiert wird. Aus irgendeinem Grund haben wir MS Excel und Word gelernt.
Gnuplot zu lernen ist nicht schwierig, ich habe buchstäblich ein paar Tage damit verbracht, es von Grund auf herauszufinden. Aber mit diesem Artikel glaube ich, dass alles für Sie schneller sein wird. Jetzt habe ich alle Exel / Calc-Plotter vergessen, ich benutze nur noch Gnuplot. Außerdem kenne ich nicht einmal ein Zehntel aller Möglichkeiten, Diagramme zu zeichnen.
Ich möchte darauf hinweisen, dass es viele andere Plotter gibt, nicht schlechter als Gnuplot, zumal es ziemlich alt ist. Aber für mich erwies sich Gnuplot als der einfachste und umfassendste. Außerdem ist es der am häufigsten verwendete Plotter, und es gibt eine Vielzahl von Beispielen für seine Verwendung im Internet. Danke fürs Lesen!
