Jak wykreślić gładką krzywą w matplotlib
Często możesz chcieć wykreślić gładką krzywą w Matplotlib dla wykresu liniowego. Na szczęście można to łatwo zrobić, korzystając z następujących funkcji SciPy:
W tym samouczku wyjaśniono, jak w praktyce korzystać z tych funkcji.
Przykład: wykreślanie gładkiej krzywej w Matplotlib
Poniższy kod pokazuje, jak utworzyć prosty wykres liniowy dla zestawu danych:
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 ()
Należy pamiętać, że wykres liniowy nie jest całkowicie gładki, ponieważ dane leżące u jego podstaw nie przebiegają po gładkiej linii. Możemy użyć następującego kodu, aby utworzyć gładką krzywą dla tego zbioru danych:
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 ()
Należy pamiętać, że im wyższy stopień argumentu k , tym bardziej „falista” będzie krzywa. Rozważmy na przykład następujący wykres z 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 ()
W zależności od tego, jak krzywizna ma być linia, możesz zmienić wartość k.
Dodatkowe zasoby
Jak wyświetlić linie siatki na wykresach Matplotlib
Jak usunąć znaczniki z wykresów Matplotlib
Jak tworzyć wykresy Matplotlib za pomocą skal logarytmicznych