Matplotlib में एक घूर्णन 3D ग्राफ़ बनाने के लिए, हम एनीमेशन . का उपयोग कर सकते हैं किसी फंक्शन को बार-बार कॉल करने के लिए क्लास।
कदम
-
मेश ग्रिड की संख्या, फ़ंक्शन को कॉल करने के लिए प्रति सेकंड फ़्रीक्वेंसी, फ़्रेम नंबर के लिए वैरिएबल प्रारंभ करें।
-
वक्र के लिए x, y, और z सरणी बनाएँ।
-
लैम्ब्डा फ़ंक्शन का उपयोग करके z सरणी बनाने के लिए एक फ़ंक्शन बनाएं।
-
किसी फ़ंक्शन को एनिमेशन क्लास में पास करने के लिए, पिछले प्लॉट को हटाने के लिए एक उपयोगकर्ता-परिभाषित फ़ंक्शन बनाएं और x, y, और zarray का उपयोग करके एक सतह को प्लॉट करें।
-
एक नया आंकड़ा बनाएं या मौजूदा आंकड़ा सक्रिय करें।
-
सबप्लॉट () पद्धति का उपयोग करके एक सबप्लॉट व्यवस्था जोड़ें।
-
set_zlim() . का उपयोग करके Z-अक्ष की सीमा निर्धारित करें विधि।
-
एनीमेशन . को कॉल करें सतह की साजिश को चेतन करने के लिए कक्षा।
-
एनिमेटेड प्लॉट प्रदर्शित करने के लिए, शो () . का उपयोग करें विधि।
उदाहरण
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
N = 50
fps = 250
frn = 75
x = np.linspace(-4, 4, N + 1)
x, y = np.meshgrid(x, x)
zarray = np.zeros((N + 1, N + 1, frn))
f = lambda x, y, sig: 1 / np.sqrt(sig) * np.exp(-(x ** 2 + y ** 2) / sig ** 2)
for i in range(frn):
zarray[:, :, i] = f(x, y, 1.5 + np.sin(i * 2 * np.pi / frn))
def change_plot(frame_number, zarray, plot):
plot[0].remove()
plot[0] = ax.plot_surface(x, y, zarray[:, :, frame_number], cmap="afmhot_r")
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
plot = [ax.plot_surface(x, y, zarray[:, :, 0], color='0.75', rstride=1,
cstride=1)]
ax.set_zlim(0, 1.1)
ani = animation.FuncAnimation(fig, change_plot, frn, fargs=(zarray, plot),
interval=1000 / fps)
ani.save('526.gif')
plt.show() आउटपुट
