So zeichnen Sie eine glatte Kurve in Matplotlib

Von Fabian
Kategorie: Python
Tags: Matplotlib
Lesezeit: 2 Minuten

Oft möchten Sie in Matplotlib eine glatte Kurve für ein Liniendiagramm zeichnen. Glücklicherweise ist dies mit Hilfe der folgenden SciPy-Funktionen einfach zu bewerkstelligen:

In diesem Tutorial wird erklärt, wie diese Funktionen in der Praxis verwendet werden.

Beispiel: Zeichnen einer glatten Kurve in Matplotlib

Der folgende Code zeigt, wie Sie ein einfaches Liniendiagramm für einen Datensatz erstellen:

import numpy as np
import matplotlib.pyplot as plt

# Daten erstellen
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([4, 9, 12, 30, 45, 88, 140, 230])

# Liniendiagramm erstellen
plt.plot(x,y)
plt.show()

Glatt

Beachten Sie, dass das Liniendiagramm nicht vollständig glatt ist, da die zugrunde liegenden Daten keiner glatten Linie folgen. Wir können den folgenden Code verwenden, um eine glatte Kurve für diesen Datensatz zu erstellen:

from scipy.interpolate import make_interp_spline, BSpline

# Daten erstellen
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([4, 9, 12, 30, 45, 88, 140, 230])

# x als 200 Werte mit gleichem Abstand zwischen min und max des ursprünglichen x definieren
xnew = np.linspace(x.min(), x.max(), 200) 

# Spline Kurve definieren
spl = make_interp_spline(x, y, k=3)
y_smooth = spl(xnew)

# Glattes Liniendiagramm erstellen 
plt.plot(xnew, y_smooth)
plt.show()

Glatte Kurve in Matplotlib

Beachten Sie, dass die Kurve umso „wackeliger“ ist, je höher der Grad ist, den Sie für das k-Argument verwenden. Betrachten Sie beispielsweise das folgende Diagramm mit k = 7:

from scipy.interpolate import make_interp_spline, BSpline

# Daten erstellen
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([4, 9, 12, 30, 45, 88, 140, 230])

# x als 200 Werte mit gleichem Abstand zwischen min und max des ursprünglichen x definieren
xnew = np.linspace(x.min(), x.max(), 200) 

# Spline mit Grad k = 7 definieren
spl = make_interp_spline(x, y, k=7)
y_smooth = spl(xnew)

# Glattes Liniendiagramm erstellen 
plt.plot(xnew, y_smooth)
plt.show()

Glatter gebogener Spline in Matplotlib

Abhängig davon, wie gekrümmt die Linie sein soll, können Sie den Wert für k ändern.

Zusätzliche Ressourcen

So zeigen Sie Gitterlinien auf Matplotlib-Plots an
So entfernen Sie Striche aus Matplotlib-Plots
So erstellen Sie Matplotlib-Diagramme mit Protokollskalen

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: