Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ทำให้กราฟ 3 มิติเคลื่อนไหวใน Matplotlib


ในการสร้างกราฟ 3 มิติแบบหมุนใน matplotlib เราสามารถใช้ แอนิเมชั่น คลาสสำหรับการเรียกใช้ฟังก์ชันซ้ำๆ

ขั้นตอน

  • เริ่มต้นตัวแปรสำหรับจำนวนกริดตาข่าย ความถี่ต่อวินาทีในการเรียกใช้ฟังก์ชัน หมายเลขเฟรม

  • สร้างอาร์เรย์ x, y และ z สำหรับเส้นโค้ง

  • สร้างฟังก์ชันเพื่อสร้างอาร์เรย์ z โดยใช้ฟังก์ชันแลมบ์ดา

  • หากต้องการส่งฟังก์ชันไปยังคลาสแอนิเมชั่น ให้สร้างฟังก์ชันที่ผู้ใช้กำหนดเองเพื่อลบพล็อตก่อนหน้าและพล็อตพื้นผิวโดยใช้ x, y และ zarray

  • สร้างตัวเลขใหม่หรือเปิดใช้งานตัวเลขที่มีอยู่

  • เพิ่มการจัดเรียงแผนย่อยโดยใช้วิธี subplots()

  • ตั้งค่าขีดจำกัดแกน Z โดยใช้ set_zlim() วิธีการ

  • เรียก แอนิเมชั่น คลาสเพื่อทำให้พื้นผิวเคลื่อนไหว

  • หากต้องการแสดงพล็อตภาพเคลื่อนไหว ให้ใช้ show() วิธีการ

ตัวอย่าง

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()

ผลลัพธ์

ทำให้กราฟ 3 มิติเคลื่อนไหวใน Matplotlib