How to plot a line (polygonal chain) with matplotlib with minimal smoothing?

To plot a line (polygonal chain) with matplotlib with minimal smoothing, you can use scipy's interpolation methods. The pchip() function provides monotonic cubic interpolation that preserves the shape of your data while adding smooth curves between points.

Steps to Create a Smooth Line Plot

  • Set the figure size and adjust the padding between and around the subplots
  • Initialize a variable N to get the number of data points
  • Create x and y data points using numpy
  • Get 1-D monotonic cubic interpolation using pchip() method
  • Plot the interpolated line and original data points
  • Display the figure using show() method

Example

Here's how to create a smooth line plot with minimal smoothing ?

import numpy as np
from scipy.interpolate import pchip
import matplotlib.pyplot as plt

# Set figure configuration
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# Create sample data
N = 50
x = np.linspace(-10, 10, N)
y = np.sin(x)

# Create interpolation function
interp = pchip(x, y)

# Plot the smooth line and original points
plt.plot(x, interp(x), color='red', label='Smooth line')
plt.plot(x, y, 'bo', label='Original points')
plt.legend()
plt.grid(True, alpha=0.3)
plt.title('Line Plot with Minimal Smoothing')

plt.show()

Alternative Approaches

Using Different Interpolation Methods

You can also use other interpolation methods for different smoothing effects ?

import numpy as np
from scipy.interpolate import pchip, interp1d
import matplotlib.pyplot as plt

# Sample data with fewer points to show interpolation effect
x = np.array([0, 1, 2, 3, 4, 5])
y = np.array([1, 3, 2, 5, 4, 6])

# Create denser x values for smooth plotting
x_smooth = np.linspace(0, 5, 100)

# Different interpolation methods
pchip_interp = pchip(x, y)
linear_interp = interp1d(x, y, kind='linear')
cubic_interp = interp1d(x, y, kind='cubic')

plt.figure(figsize=(10, 6))

# Plot different interpolations
plt.plot(x_smooth, pchip_interp(x_smooth), 'r-', label='PCHIP (minimal smoothing)')
plt.plot(x_smooth, linear_interp(x_smooth), 'g--', label='Linear')
plt.plot(x_smooth, cubic_interp(x_smooth), 'b:', label='Cubic spline')
plt.plot(x, y, 'ko', markersize=8, label='Original data')

plt.legend()
plt.grid(True, alpha=0.3)
plt.title('Comparison of Interpolation Methods')
plt.xlabel('X values')
plt.ylabel('Y values')

plt.show()

Why Use PCHIP for Minimal Smoothing?

PCHIP (Piecewise Cubic Hermite Interpolating Polynomial) is ideal for minimal smoothing because it:

  • Preserves monotonicity − doesn't create artificial oscillations
  • Maintains shape − respects the natural trend of your data
  • Provides smoothness − creates visually appealing curves without over-smoothing

Comparison of Methods

Method Smoothness Shape Preservation Best For
Linear No smoothing Exact Sharp changes
PCHIP Minimal Excellent Natural curves
Cubic spline Maximum May overshoot Very smooth data

Conclusion

Use PCHIP interpolation for plotting smooth lines with minimal smoothing that preserve your data's natural shape. It provides the perfect balance between smoothness and accuracy for most data visualization needs.

Updated on: 2026-03-25T23:56:18+05:30

287 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements