Matplotlib-এ 3D plot_surface অ্যানিমেট করতে, আমরা নিম্নলিখিত পদক্ষেপগুলি নিতে পারি−
- মেশ গ্রিডের সংখ্যার জন্য ভেরিয়েবল শুরু করুন (N) , প্রতি সেকেন্ডে ফ্রিকোয়েন্সি (fps) একটি ফাংশন, এবং ফ্রেম নম্বর (frn) কল করতে .
- x তৈরি করুন , y এবং z একটি বক্ররেখার জন্য অ্যারে।
- একটি z-অ্যারে তৈরি করতে একটি ফাংশন তৈরি করুন ল্যাম্বডা ফাংশন ব্যবহার করে।
- অ্যানিমেশন ক্লাসে একটি ফাংশন পাস করতে , একটি ব্যবহারকারী-সংজ্ঞায়িত ফাংশন তৈরি করুন যা পূর্ববর্তী প্লটটি সরিয়ে দেয় এবং x ব্যবহার করে একটি পৃষ্ঠ প্লট করে , y এবং z-অ্যারে।
- একটি নতুন চিত্র তৈরি করুন বা একটি বিদ্যমান চিত্র সক্রিয় করুন৷ ৷
- সাবপ্লট() ব্যবহার করে একটি সাবপ্লট ব্যবস্থা যোগ করুন পদ্ধতি।
- set_zlim() ব্যবহার করে Z-অক্ষের সীমা সেট করুন পদ্ধতি।
- অ্যানিমেশন ক্লাসে কল করুন সারফেস প্লটকে অ্যানিমেট করতে।
- চিত্রটি প্রদর্শন করতে, শো() ব্যবহার করুন পদ্ধতি।
উদাহরণ
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()
আউটপুট