Skip to content

Charts mit Python

Für meine Diplomarbeit suchte ich vor einigen Tagen nach einer Möglichkeit, statistische Daten aus CSV-Dateien zu extrahieren, umzurechnen und grafisch darzustellen.

Da mir Excel suspekt ist, ich mich damit auch nicht sonderlich gut auskenne und ich vor Kurzem begonnen habe, mich für Python zu interessieren, habe ich mich auf die Suche nach einer Lösung in Python gemacht. Als zusätzliche Anforderung an diese Lösung sollte als Ausgabeformat das von mir ebenfalls sehr geschätzte SVG möglich sein.

Bei PyChart von Yasushi Saito wurde ich fündig. Diese Bibliothek kann allerlei Charts erzeugen und bietet einige Ausgabeformate, darunter auch SVG, an. Zusätzlich bietet sie Möglichkeiten zum Einlesen von CSV-Dateien und zum statistischen Auswerten (Mittelwert, Abweichung) dieser Daten. Die vielen Beispiele liegen auch im Quellcode vor (allerdings nicht direkt auf der Seite, sondern nur im runterzuladenden Archiv). Eine anschauliche Einführung. Als Beispiel soll folgender Code aus den auf der Seite zu findenden Beispielen die Kompaktheit der Bibliothek veranschaulichen:

from pychart import *
import sys

data = [("foo", 10),("bar", 20), ("baz", 30), ("ao", 40)]

ar = area.T(size=(170,150), legend=legend.T(),
            x_grid_style = None, y_grid_style = None)

plot = pie_plot.T(data=data, arc_offsets=[3,3,3,8],
                  shadow = (1, -1, fill_style.gray50),
                  label_offset = 25,
                  arrow_style = arrow.a3)
ar.add_plot(plot)
ar.draw()
Tortengrafik

Dieses kurze Skript produziert nebenstehende Tortengrafik.
Die Verwendung eines Skripts (im Gegensatz zu Excel) hat in meinen Augen den Vorteil, dass ein hohes Mass an Automatisierung erreicht werden kann. Wenn das Skript erstmal geschrieben ist, was mit zunehmender Erfahrung und Vertrautheit mit Sprache und Bibliothek natürlich immer weniger lang dauert, so werden die Daten vollständig automatisch verarbeitet und die Grafik erzeugt. Vermutlich wird man für verschiedene Auswertungen unterschiedliche kleine Skripte schreiben, wobei man viel Code sicherlich kopieren kann. Zur Zeit habe ich ein Skript, dass Daten aus verschiedenen CSV-Dateien einliesst (die Dateien repräsentieren verschiedene Testläufe desselben Systems) und sie in einen Datensatz zusammenfügt. In meinem Fall wird der Mittelwert und die Abweichung der Werte aus den verschiedenen Dateien bestimmt und grafisch dargestellt. Was ich also tue ist, die Daten generieren zu lassen. Dann rufe ich das Skript auf, warte, und schaue mir anschließend die Grafik an.
Durch die Verwendung einer vollwertigen Programmiersprache (im Gegensatz zu z.B. Excel) sind natürlich weitere Automatisierungen möglich. So könnten nach dem Erstellen der Grafik die CSV-Dateien in ein zip-Archiv verschoben und die Grafik hinzukopiert werden, so dass die Daten samt Analyse anschließend gesichert werden können. Der Fantasie sind da kaum Grenzen gesetzt… :-)

Nachtrag

Biggles ist ein weiteres Chart-Package für Python. Was ich von den Code-Beispielen gesehen habe, allerdings wohl nicht so schön wie PyChart. Gegenteilige, oder irgendwelche Meinungen (;-)) und Erfahrungen würden mich interessieren…

{ 2 } Comments

  1. butters | 2007/4/11 at 10:56 | Permalink

    danke für den tip. bin jetzt erst aus beruflichen gründen drübergestolpert, hat mich aber auf den richtigen kurs gebracht…

  2. Steffen | 2007/4/11 at 08:31 | Permalink

    Du solltest dir vielleicht auch noch Matplotlib anschauen. Sehr mächtig und von meiner ersten Drübersicht trotzdem recht gut zu benutzen.

Post a Comment

Your email is never published nor shared. Required fields are marked *