如何在 Matplotlib 中动态显示 3D 绘制表面?
要在 Matplotlib 中动态显示 3D 绘制表面,我们可采取以下步骤:
- 初始化网格数量 (N)、每秒调用函数的频率 (fps) 和帧数 (frn) 的变量。
- 针对曲线创建 x、y 和 z 数组。
- 使用 lambda 函数创建一个函数来生成 z 数组。
- 要将函数传递到动画类中,创建一个自定义函数,以使用 x、y 和 z 数组移除上一个绘图,并绘制一个曲面。
- 创建一个新绘图或激活一个现有绘图。
- 使用 subplots() 方法添加一个子图布置。
- 使用 set_zlim() 方法设置 Z 轴限制。
- 调用动画类以显示曲面绘图的动态效果。
- 要显示绘图,请使用 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()输出

广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP