如何在Matplotlib中制作3D plot_surface动画?

如何在Matplotlib中制作3D plot_surface动画?

在Matplotlib中制作3D plot_surface动画,我们可以采取以下步骤 –

  • 初始化网格数量 (N) 、每秒帧率 (fps) 以调用函数和帧数 (frn) 的变量。
  • 创建一个关于曲线的 xyz 数组。
  • 使用lambda函数创建一个 z-array 函数。
  • 创建一个自定义函数,删除前一次绘图,并使用 xyz-array 绘制表面图,以将一个函数传递到 animation class 中。
  • 创建一个新的图或激活现有的图。
  • 使用 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()

输出

如何在Matplotlib中制作3D plot_surface动画?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程