在 Matplotlib 中制作一个旋转的三维图形


要制作旋转的三维图形,在 matplotlib 中,我们可以使用 Animation 类来重复调用一个函数。

步骤

  • 初始化网格数、每秒调用函数的频率以及帧数的变量。

  • 为曲线创建 x、y 和 z 数组。

  • 制作函数,使用 lambda 函数制作 z 数组。

  • 为了将函数传给 animation 类,制作一个用户定义函数来移除上一次绘图,并使用 x、y 和 z 数组来绘图。

  • 创建一个新图或激活一个现有图。

  • 使用 subplots() 方法添加一个子图排列。

  • 使用  set_zlim() 方法来设置 Z 轴的限制。

  • 调用 animation 类,来制作曲面图的动画。

  • 要展示动画图,使用 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()

输出

更新于:11-May-2021

2 千+ 浏览

开始你的职业生涯

完成课程获取认证

开始
广告
© . All rights reserved.