Plotting a Smooth Line in PyPlot
Problem:
When plotting a graph using PyPlot, the connecting lines between data points may appear rigid and discontinuous. This can be undesirable in certain scenarios.
Question:
How to smoothen the connecting lines in a PyPlot graph?
Solution:
To achieve a smoother line, one can utilize scipy's spline interpolation technique. Here's how:
<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>
Note: The 'spline' function in scipy is deprecated in version 0.19.0. Use the 'BSpline' class instead. Here's an updated 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>
The 'k' argument in 'make_interp_spline' controls the smoothness of the spline. Higher values of 'k' result in smoother lines.
The resulting plot will exhibit a smooth connecting line between data points, providing a more visually appealing representation of the data.
The above is the detailed content of How to Create a Smooth Line in a PyPlot Graph?. For more information, please follow other related articles on the PHP Chinese website!