Ich habe mit einem Projekt begonnen, das Tomcat- Protokolle mit gnuplot-py grafisch darstellt und insbesondere bestimmte Anforderungen mit der Speicherzuweisung und der Speicherbereinigung korreliert. Was ist die kollektive Weisheit über gnuplot-py vs Matplotlib für Python-Grafik. Gibt es bessere Grafikbibliotheken, von denen ich noch nichts gehört habe?
Meine allgemeinen Überlegungen sind:
- Während gnuplot große Mengen an Dokumentation enthält, ist dies bei gnuplot-py nicht der Fall. Wie gut ist die Dokumentations-Community für Matplotlib?
- Gibt es Dinge, die Gnuplot tun kann, Gnuplot-py jedoch nicht?
- Hat Matplotlib eine bessere Python-Unterstützung?
- Gibt es große Show-Stop-Bugs? Ärger?
- Derzeit zeichnet gnuplot 100.000 Punkte auf. Ich plane, diese auf Millionen zu skalieren. Soll ich mit Problemen rechnen? Wie gut geht Matplotlib damit um?
- Benutzerfreundlichkeit, Bearbeitungszeit für Gnuplot vs Matplotlib?
- Wie einfach wäre es, vorhandenen Gnuplot-Py-Code nach Matplotlib zu portieren?
Wie würden Sie diese Aufgabe angehen?
Antworten:
quelle
Matplotlib = Benutzerfreundlichkeit, Gnuplot = (etwas bessere) Leistung
Ich weiß, dass dieser Beitrag alt und beantwortet ist, aber ich ging vorbei und wollte meine zwei Cent setzen. Hier ist meine Schlussfolgerung: Wenn Sie einen nicht so großen Datensatz haben, sollten Sie Matplotlib verwenden. Es ist einfacher und sieht besser aus. Wenn Sie jedoch wirklich Leistung benötigen, können Sie Gnuplot verwenden. Ich habe Code hinzugefügt, um ihn auf Ihrem Computer zu testen und selbst zu sehen, ob er einen echten Unterschied macht (dies ist kein echter Leistungsmaßstab, sollte aber eine erste Idee geben).
Das folgende Diagramm zeigt die erforderliche Zeit (in Sekunden) für:
Aufbau:
Ich erinnere mich, dass die Leistungslücke auf einem älteren Computer mit älteren Versionen der Bibliotheken viel größer ist (~ 30 Sekunden Unterschied für ein großes Streudiagramm).
Darüber hinaus können Sie, wie in den Kommentaren erwähnt, eine gleichwertige Qualität der Diagramme erhalten. Aber Sie müssen mehr ins Schwitzen bringen, um es mit Gnuplot zu tun.
Hier ist der Code zum Generieren des Diagramms, wenn Sie es auf Ihrem Computer ausprobieren möchten:
quelle
matplotlib
hat eine ziemlich gute Dokumentation und scheint ziemlich stabil zu sein. Die Handlungen, die es produziert, sind wunderschön - "Publikationsqualität" sicher. Aufgrund der guten Dokumentation und der Menge an online verfügbarem Beispielcode ist es einfach zu erlernen und zu verwenden, und ich glaube, Sie werden keine großen Probleme beim Übersetzen habengnuplot
Code in diesen Code zu . Schließlich wird Matplotlib von Wissenschaftlern verwendet, um Daten zu zeichnen und Berichte zu erstellen - es enthält also alles, was man braucht.Ein deutlicher Vorteil von matplotlib ist, dass Sie es in Python-GUIs ( mindestens wxPython und PyQt ) integrieren und eine GUI-Anwendung mit schönen Plots erstellen können.
quelle
Nachdem ich GNUplot (mit meinem eigenen Python-Wrapper) für eine lange Zeit verwendet hatte (und die 80er-Jahre-Ausgabe wirklich nicht mochte), fing ich gerade an, mir matplotlib anzuschauen. Ich muss sagen, es gefällt mir sehr gut, die Ausgabe sieht wirklich gut aus und die Dokumente sind von hoher Qualität und umfangreich (obwohl das auch für GNUplot gilt). Das einzige, wonach ich in den matplotlib-Dokumenten lange gesucht habe, ist, wie man in eine Bilddatei schreibt und nicht auf den Bildschirm! Zum Glück erklärt diese Seite es ziemlich gut: http://www.dalkescientific.com/writings/diary/archive/2005/04/23/matplotlib_without_gui.html
quelle
Ich habe mit beiden gespielt und ich mag Matplotlib viel besser in Bezug auf Python-Integration, Optionen und Qualität von Grafiken / Plots.
quelle
Informationen zur Leistung und zum Zeichnen einer großen Anzahl von Punkten: Ich habe dies mit einem Streudiagramm von 500.000 Punkten verglichen, das aus einer Textdatei geladen und mit gnuplot * und matplotlib in einem PNG gespeichert wurde.
Ich habe es nur einmal ausgeführt und die Ergebnisse sehen nicht identisch aus, aber ich denke, die Idee ist klar: Gnuplot gewinnt bei der Leistung.
* Ich habe gnuplot direkt verwendet, da die gnuplotpy-Demo für mich nicht sofort funktioniert. Matplotlib gewinnt bei der Python-Integration.
quelle
Was Gnuplot kann Gnuplot-Py kann auch. Weil Gnuplot per Pipe (pgnuplot) gefahren werden kann. Gnuplot-Py ist nur eine dünne Schicht dafür. Sie brauchen sich also keine Sorgen zu machen.
Warum ich Gnuplot bevorzuge, sind vielleicht die vielen Ausgabeformate (PDF, PS und LaTex), die in Papieren sehr nützlich sind, und die Standardausgabe sieht eher wissenschaftlich aus :)
quelle
Einige Profis von
gnuplot
(Ich mag Matlibplot nach Jahren des Gebrauchs immer noch nicht):sin(x)
(keine Notwendigkeit Arrays zu definieren und über Bereiche denken)"<echo 1 2 3"
)gplot.py ist ein weiterer Wrapper-Gnuplot-Wrapper für Python und Jupyter.
quelle