Matplotlib-এ ৩D plot_surface অ্যানিমেট করতে নিচের ধাপগুলো ফলো করতে পারেন:
- মেশ গ্রিডের সংখ্যা (N), সেকেন্ডে ফ্রিকোয়েন্সি (fps) ফাংশন কল করতে, এবং ফ্রেম নম্বর (frn) এর জন্য ভেরিয়েবল ইনিশিয়ালাইজ করুন।
- একটি কার্ভের জন্য x, y এবং z অ্যারে তৈরি করুন।
- z-array বানানোর একটি ফাংশন বানান lambda ফাংশন ব্যবহার করে।
- animation class-এ ফাংশন পাস করতে, একটি ইউজার-ডিফাইনড ফাংশন বানান যা আগের প্লট রিমুভ করবে এবং x, y এবং z-array দিয়ে সারফেস প্লট করবে।
- একটি নতুন ফিগার তৈরি করুন বা বিদ্যমান ফিগার এক্টিভেট করুন।
- subplots() মেথড ব্যবহার করে সাবপ্লট আয়োজন করুন।
- set_zlim() মেথড ব্যবহার করে Z-অক্ষ লিমিট সেট করুন।
- animation class কল করুন সারফেস প্লট অ্যানিমেট করতে।
- ফিগার প্রদর্শন করতে show() মেথড ব্যবহার করুন।
উদাহরণ
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
plt.rcParams["figure.figsize"] = [7.50, 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)
ax.axis('off')
plt.show()
আউটপুট
