Matplotlib-Funktion plot()
Matplotlib-Referenzdokumentation
plot()Sie ist die zentralste Funktion in Matplotlib und wird zum Zeichnen von Liniendiagrammen verwendet.
Sie erstellt Linien durch Verbinden der angegebenen x- und y-Koordinatenpunkte und unterstützt die Anpassung von Farbe, Linienstil, Marker und Linienbreite.
Funktionsdefinition
pyplot-Schnittstelle
matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs)
Axes-Schnittstelle
Axes.plot(*args, scalex=True, scaley=True, data=None, **kwargs)
Parameterbeschreibung
| Parameter | Type | Beschreibung |
|---|---|---|
| *args | Variable Argumente | Unterstützt mehrere Aufrufkonventionen: plot(y), plot(x, y), plot(x, y, 'fmt'), plot(x1, y1, 'fmt1', x2, y2, 'fmt2', ...) |
| scalex / scaley | bool | Ob die x/y-Achsen automatisch an die Daten angepasst werden sollen; Standard ist True |
| data | Indizierbares Objekt | Falls angegeben, können Strings als Argumente verwendet werden, um auf Datenspalten darin zu verweisen. |
| color oder c | color | Linienfarbe, z. B. 'red', '#ff0000', 'tab:blue' |
| linestyle oder ls | str | Linienstil: '-' (durchgezogen), '--' (gestrichelt), '-.' (Strich-Punkt), ':' (gepunktet), '' (keine Linie) |
| linewidth oder lw | float | Linienbreite, Standardwert ungefähr 1.5 |
| marker | str | Datenpunktmarker: '.', 'o', 's', '^', '*', '+' (Pluszeichen), 'x', usw. |
| markersize oder ms | float | Markergröße |
| label | str | Legendenbezeichnung, verwendet mit legend() |
| Alpha | float | Transparenz, von 0 (vollständig transparent) bis 1 (vollständig deckend) |
| zorder | float | Ebenenreihenfolge, je größer der Wert, desto höher wird gezeichnet |
Der fmt-Format-String besteht aus drei Teilen:
'[Color][Marker][Line Style]'wie zum Beispiel'ro--'steht für Rot, kreisförmigen Marker, gestrichelte Linie. Die Reihenfolge der Teile ist beliebig.
Gängige Farbabkürzungen
| Zeichen | Farbe | Zeichen | Farbe |
|---|---|---|---|
| 'b' | Blau | 'r' | Rot |
| 'g' | Grün | 'c' | Cyan |
| 'm' | Magenta | 'y' | Yellow |
| 'k' | Schwarz | 'w' | White |
Anwendungsbeispiele
Beispiel 1: Das einfachste Liniendiagramm
Wenn nur y-Werte übergeben werden, verwendet x automatisch Indizes beginnend bei 0.
Beispiel
import numpy as np
# 50 Datenpunkte zwischen 0-10 generieren
x = np.linspace(0, 10, 50)
y = np.sin(x) # Sinusfunktion
# Einfachster Aufruf: x, y
plt.plot(x, y)
plt.title('Einfaches Liniendiagramm')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.grid(True, alpha=0.3)
plt.show()
Beispiel 2: Mehrere Kurven + Format-String
Zeichnen Sie mehrere Kurven im selben Plot mit unterschiedlichen Farben, Linienstilen und Markern.
Beispiel
import numpy as np
x = np.linspace(0, 10, 50)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.sin(x) * np.exp(-x / 3) # Gedämpfte Sinusfunktion
# Mehrere Kurven, jede mit einem anderen Format
plt.plot(x, y1, 'b-o', label='sin(x)') # Blaue durchgezogene Linie + Kreis-Marker
plt.plot(x, y2, 'r--s', label='cos(x)') # Rote gestrichelte Linie + Quadrat-Marker
plt.plot(x, y3, 'g-.^', label='gedämpfte sin(x)') # Grüne Strichpunktlinie + Dreieck-Marker
plt.title('Mehrere Linien mit unterschiedlichen Stilen')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()
Beispiel 3: Stil mit Schlüsselwortargumenten anpassen
Verwenden Sie Schlüsselwortargumente für eine feinere Kontrolle über das Aussehen der Linie.
Beispiel
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
fig, ax = plt.subplots(figsize=(8, 4), layout='constrained')
# Verwenden Sie Schlüsselwortargumente anstelle eines Format-Strings, besser lesbar
ax.plot(x, np.sin(x),
color='steelblue', # Farbname
linestyle='-', # Durchgezogene Linie
linewidth=2.5, # Linienbreite
marker='o', # Kreismarker
markersize=4, # Markergröße
markerfacecolor='red', # Marker-Füllfarbe
markeredgecolor='black', # Marker-Randfarbe
markeredgewidth=0.5, # Marker-Randbreite
alpha=0.8, # Gesamttransparenz
label='sin(x)')
# Vergleich: gestrichelte Linie ohne Marker
ax.plot(x, np.cos(x),
color='#ff6600', # Hexadezimalfarbe
linestyle='--',
linewidth=2,
label='cos(x)')
ax.set_title('Benutzerdefinierte Linienstile', fontsize=14)
ax.set_xlabel('x (radians)')
ax.set_ylabel('Amplitude')
ax.legend(loc='upper right')
ax.grid(True, alpha=0.2)
plt.show()
print("Beispiel: benutzerdefinierter Plot angezeigt")
Beispiel 4: Verwendung des data-Parameters (DataFrame-Unterstützung)
Wenn es sich bei den Daten um ein dict oder pandas DataFrame handelt, können String-Spaltennamen verwendet werden.
Beispiel
import numpy as np
# Daten als Dictionary organisieren
data = {
'time': np.arange(0, 10, 0.5),
'voltage': np.sin(np.arange(0, 10, 0.5)) * 5 + 10,
'current': np.cos(np.arange(0, 10, 0.5)) * 2 + 5,
}
fig, ax = plt.subplots(layout='constrained')
# Referenzdaten über den data-Parameter + String-Spaltennamen
ax.plot('time', 'voltage', 'b-', data=data, label='Spannung (V)')
ax.plot('time', 'current', 'r--', data=data, label='Strom (A)')
ax.set_title('Verwendung des data-Parameters mit Spaltennamen')
ax.set_xlabel('Zeit (s)')
ax.set_ylabel('Wert')
ax.legend()
ax.grid(True, alpha=0.3)
plt.show()
Beispiel 5: Aufruf auf einem Axes-Objekt (empfohlener Ansatz)
Die Verwendung der objektorientierten Axes-Schnittstelle ist in Szenarien mit mehreren Subplots übersichtlicher.
Beispiel
import numpy as np
x = np.linspace(0, 10, 100)
# Zwei nebeneinanderliegende Subplots erstellen
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4),
layout='constrained')
# Linker Subplot: mathematische Funktion
ax1.plot(x, np.sin(x), label='sin(x)')
ax1.plot(x, np.cos(x), label='cos(x)')
ax1.set_title('Mathematische Funktionen')
ax1.legend()
ax1.grid(True, alpha=0.3)
# Rechter Subplot: Datentrend
data = np.random.randn(100).cumsum() # Zufällige Irrfahrt
ax2.plot(data, color='teal', linewidth=1.5)
ax2.set_title('Zufällige Irrfahrt (kumulative Summe)')
ax2.set_xlabel('Schritt')
ax2.set_ylabel('Position')
ax2.grid(True, alpha=0.3)
plt.show()
FAQ
Reihenfolge von x und y in plot()
Der Standardaufruf istplot(x, y), x steht zuerst, y folgt danach.
Wenn nur ein Array übergeben wird, z. B.plot(y), dann wird x automatisch alsrange(0, len(y))。
Wie zeichnet man unterbrochene Liniensegmente?
Bei Daten, die NaN enthalten, unterbricht plot() die Linie automatisch bei NaN, was zum Zeichnen von segmentierten Linien verwendet werden kann.
Können der fmt-String und Schlüsselwortargumente zusammen verwendet werden?
Ja, Schlüsselwortargumente überschreiben die entsprechenden Einstellungen im fmt-String. Zum Beispielplot(x, y, 'ro', color='blue')Hier kommt marker='o' aus fmt, aber color wird zu blue überschrieben.
Andere Erweiterungen