Hoe een vloeiende curve in matplotlib te plotten
Vaak wilt u misschien een vloeiende curve in Matplotlib uitzetten voor een lijngrafiek. Gelukkig is dit eenvoudig te doen met behulp van de volgende SciPy-functies:
In deze tutorial wordt uitgelegd hoe u deze functies in de praktijk kunt gebruiken.
Voorbeeld: een vloeiende curve uitzetten in Matplotlib
De volgende code laat zien hoe u een eenvoudig lijndiagram maakt voor een set gegevens:
import numpy as np import matplotlib.pyplot as plt #create data x = np.array([1, 2, 3, 4, 5, 6, 7, 8]) y = np.array([4, 9, 12, 30, 45, 88, 140, 230]) #create line chart plt. plot (x,y) plt. show ()
Houd er rekening mee dat het lijndiagram niet helemaal vloeiend is, omdat de onderliggende gegevens geen vloeiende lijn volgen. We kunnen de volgende code gebruiken om een vloeiende curve voor deze gegevensset te maken:
from scipy.interpolate import make_interp_spline, BSpline #createdata x = np.array([1, 2, 3, 4, 5, 6, 7, 8]) y = np.array([4, 9, 12, 30, 45, 88, 140, 230]) #define x as 200 equally spaced values between the min and max of original x xnew = np. linspace ( x.min (), x.max (), 200 ) #define spline spl = make_interp_spline (x, y, k= 3 ) y_smooth = spl (xnew) #create smooth line chart plt. plot (xnew, y_smooth) plt. show ()
Merk op dat hoe hoger de graad die u gebruikt voor het k- argument, hoe “golvender” de curve zal zijn. Beschouw bijvoorbeeld de volgende grafiek met k=7 :
from scipy.interpolate import make_interp_spline, BSpline #createdata x = np.array([1, 2, 3, 4, 5, 6, 7, 8]) y = np.array([4, 9, 12, 30, 45, 88, 140, 230]) #define x as 200 equally spaced values between the min and max of original x xnew = np. linspace ( x.min (), x.max (), 200 ) #define spline with degree k=7 spl = make_interp_spline (x, y, k= 7 ) y_smooth = spl (xnew) #create smooth line chart plt. plot (xnew, y_smooth) plt. show ()
Afhankelijk van hoe krom de lijn moet zijn, kunt u de waarde van k wijzigen.
Aanvullende bronnen
Hoe rasterlijnen op Matplotlib-plots worden weergegeven
Hoe teken uit Matplotlib-plots te verwijderen
Hoe Matplotlib-plots met logaritmische schalen te maken