Heim > Artikel > Backend-Entwicklung > Wie erstelle ich eine glatte Linie in einem PyPlot-Diagramm?
Plotten einer glatten Linie in PyPlot
Problem:
Beim Plotten eines Diagramms mit PyPlot , können die Verbindungslinien zwischen Datenpunkten starr und diskontinuierlich erscheinen. Dies kann in bestimmten Szenarien unerwünscht sein.
Frage:
Wie glättet man die Verbindungslinien in einem PyPlot-Diagramm?
Lösung:
Um eine glattere Linie zu erzielen, kann man Scipys Spline verwenden Interpolationstechnik. So geht's:
<code class="python">import matplotlib.pyplot as plt import numpy as np import scipy.interpolate T = np.array([6, 7, 8, 9, 10, 11, 12]) power = np.array([1.53E+03, 5.92E+02, 2.04E+02, 7.24E+01, 2.72E+01, 1.10E+01, 4.70E+00]) # Create a dense array of points for interpolation xnew = np.linspace(T.min(), T.max(), 300) # Interpolate the data using a cubic spline power_smooth = scipy.interpolate.spline(T, power, xnew) # Plot the smoothed line plt.plot(xnew, power_smooth) plt.show()</code>
Hinweis: Die „Spline“-Funktion in Scipy ist in Version 0.19.0 veraltet. Verwenden Sie stattdessen die Klasse „BSpline“. Hier ist eine aktualisierte Version:
<code class="python">from scipy.interpolate import make_interp_spline, BSpline # Create a dense array of points for interpolation xnew = np.linspace(T.min(), T.max(), 300) # Create a B-spline interpolation object spl = make_interp_spline(T, power, k=3) # type: BSpline # Evaluate the interpolation at the new points power_smooth = spl(xnew) # Plot the smoothed line plt.plot(xnew, power_smooth) plt.show()</code>
Das Argument „k“ in „make_interp_spline“ steuert die Glätte des Splines. Höhere Werte von „k“ führen zu glatteren Linien.
Das resultierende Diagramm weist eine glatte Verbindungslinie zwischen Datenpunkten auf, was eine optisch ansprechendere Darstellung der Daten ermöglicht.
Das obige ist der detaillierte Inhalt vonWie erstelle ich eine glatte Linie in einem PyPlot-Diagramm?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!