3D Line

Variable Compression Spring

A 3D spring coil with variable compression showing realistic mechanical behavior, on a light background.

Output
Variable Compression Spring
Python
import matplotlib.pyplot as plt
import numpy as np

# Realistic spring/coil
n = 500
t = np.linspace(0, 10 * np.pi, n)

# Spring parameters
radius = 1
pitch = 0.3
compression = 1 + 0.3 * np.sin(t / 5)  # Variable compression

x = radius * np.cos(t) * compression
y = radius * np.sin(t) * compression
z = pitch * t / np.pi

fig = plt.figure(figsize=(10, 8), facecolor='#ffffff')
ax = fig.add_subplot(111, projection='3d', facecolor='#ffffff')

# Metal-like appearance
ax.plot(x, y, z, color='#059669', linewidth=4, alpha=0.3)
ax.plot(x, y, z, color='#10b981', linewidth=2)

ax.set_xlim(-2, 2)
ax.set_ylim(-2, 2)
ax.set_zlim(0, 4)

ax.set_xlabel('X', color='#1f2937', fontsize=10)
ax.set_ylabel('Y', color='#1f2937', fontsize=10)
ax.set_zlabel('Z', color='#1f2937', fontsize=10)
ax.set_title('Variable Compression Spring', color='#1f2937', fontsize=14, fontweight='bold', pad=20)

ax.tick_params(colors='#6b7280', labelsize=8)
ax.xaxis.pane.fill = False
ax.yaxis.pane.fill = False
ax.zaxis.pane.fill = False
ax.xaxis.pane.set_edgecolor('#e5e7eb')
ax.yaxis.pane.set_edgecolor('#e5e7eb')
ax.zaxis.pane.set_edgecolor('#e5e7eb')
ax.grid(True, alpha=0.3, color='#d1d5db')

ax.view_init(elev=15, azim=30)
plt.tight_layout()
plt.show()
Library

Matplotlib

Category

3D Charts

Did this help you?

Support PyLucid to keep it free & growing

Support