Zurück zur Startseite

Graphen aus CSV in Python matplotlib erstellen

Der Artikel beschreibt Skripte zum Erstellen von 2D-Graphen aus CSV mit matplotlib. Beispiele: grundlegender Plot, Hinzufügen der Beleuchtungsstärke-Schwelle, Gitter, Legende. Vorteile und Paketinstallation.

Graphen aus CSV: matplotlib in Python mit Beispielen
Advertisement 728x90

CSV-Daten mit Matplotlib in Python visualisieren

Ein Python-Skript mit der Bibliothek matplotlib ermöglicht es, blitzschnell Visualisierungen aus CSV-Dateien zu erstellen. Dieses Beispiel nutzt eine Datei namens LiLog.csv mit Spalten für Zeilennummer, Lichtstärke (Lx), Temperatur, Zeit, Datum und Unix-Timestamp. Das Diagramm zeigt den Timestamp (Spalte 6) auf der X-Achse und die Lichtstärke (Spalte 2) auf der Y-Achse.

Du benötigst Python 3+, matplotlib und das integrierte csv-Modul. Überprüfe deinen Python-Interpreter mit where python und verwende eine saubere Installation, vermeide Bundles aus Cygwin oder Inkscape.

Installiere die Abhängigkeiten:

Google AdInline article slot
pip install matplotlib numpy

Basis-Skript für 2D-Liniendiagramm

Dieser Code lädt die Daten, parst die CSV-Datei und zeichnet eine Linie:

import matplotlib.pyplot as plt
import csv

X = []
Y = []

with open('LiLog.csv', 'r') as datafile:
    plotting = csv.reader(datafile, delimiter=',')  # Komma für dieses Beispiel
    
    for ROWS in plotting:
        X.append(float(ROWS[5]))
        Y.append(float(ROWS[1]))

plt.plot(X, Y)
plt.title('Liniendiagramm aus CSV')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

Die Listen X und Y werden mit Float-Werten aus den angegebenen Spalten gefüllt. csv.reader behandelt den Trennzeichen (hier Komma – prüfe deine Datei). plt.plot zeichnet die Linie, und show() öffnet das Fenster.

Erweiterte Grafik mit Schwellenwertlinie und Beschriftungen

Füge eine horizontale Schwellenwertlinie (63 Lx), Gitter, Legende und gedrehte Beschriftungen hinzu:

Google AdInline article slot
import matplotlib.pyplot as plt
import csv

X = []
Y = []

with open('LiLog.csv', 'r') as datafile:
    plotting = csv.reader(datafile, delimiter=',')
    
    for ROWS in plotting:
        X.append(float(ROWS[5]))
        Y.append(float(ROWS[1]))

threshold = 63.0
T = [threshold] * len(Y)

plt.plot(X, Y)
plt.plot(X, T)
plt.title('Änderung der Beleuchtung')
plt.xlabel('Zeit,[s]')
plt.ylabel('Lichtstärke, [Lx]')
plt.grid()
plt.xticks(rotation=-90)
plt.legend(['Beleuchtung', f'Schwellenwert {threshold} Lx'])
plt.show()

Prüfe die Array-Längen mit print(len(X), len(Y)). Datentypen sind list[float]. Interaktive Funktionen umfassen Zoom und Verschieben über die Toolbar des matplotlib-Fensters.

Abhängigkeiten und Installation

Installierte Pakete auflisten: pip freeze. Typische matplotlib-Ausgabe:

  • contourpy==1.3.3
  • cycler==0.12.1
  • fonttools==4.62.1
  • kiwisolver==1.5.0
  • matplotlib==3.10.8
  • numpy==2.4.4

Einzeln installieren: pip install matplotlib numpy.

Google AdInline article slot

Warum Matplotlib für Datenvisualisierung super ist

  • Kostenlos und Open Source.
  • Interaktiv: Zoomen, als PNG speichern, Achsen und Gitter anpassen.
  • Plattformübergreifend: Windows, Linux (mit GUI).
  • Zu EXE packen mit PyInstaller für einfaches Teilen.
  • Minimaler Footprint: Nur eine .py-Datei.
  • Headless-Automatisierung: Von der Kommandozeile ohne GUI ausführen.

Einschränkungen

  • Echtzeit-Plotting (z. B. COM/TCP-Streams) erfordert Threading oder FuncAnimation.
  • Große Datensätze (>1 Mio. Punkte) können langsam werden – optimiere mit numpy-Arrays.

Wichtige Tipps

  • Nutze numpy für Arrays: X = np.array(X) beschleunigt das Plotten.
  • CSV-Trennzeichen: Probiere delimiter=',' oder ';', oder wechsle zu pandas für komplexe Dateien.
  • Achsenbeschriftungen: plt.xlabel, plt.ylabel mit Einheiten (s, Lx).
  • Legende: plt.legend(['Daten', 'Schwellenwert']) für mehrere Linien.
  • Gitter: plt.grid() verbessert die Lesbarkeit.

Python + matplotlib ist die Top-Kombo für schnelle Visualisierungen von Experimentaldaten aus CSV-Dateien. Ideal für die Analyse von Sensorlogs, wie Lichtstärken über die Zeit.

— Editorial Team

Advertisement 728x90

Weiterlesen