Matplotlib 如何在matplotlib中制作3D平面动画

Matplotlib 如何在matplotlib中制作3D平面动画

Matplotlib是一个用Python编写的数据可视化库,用于创建出版物质量的图形。其它的数据可视化库比如Seaborn, ggplot, Plotly等,Matplotlib是最流行的,使用也最广泛的。

本次文章中,我们将会学习如何在Matplotlib中使用plot_surface方法创建3D平面动画。

阅读更多:Matplotlib 教程

准备工作

在我们开始动手制作动画之前,我们先需要安装一些必要的库。

如果你的电脑上还没有这些库,可以使用pip来安装它们:

pip install matplotlib numpy matplotlib.animation

当然,在安装之前请先确保Python和pip已经安装完毕。

制作3D动画

我们使用plot_surface方法来创建3D平面。此方法最好在jupyter notebook中执行,因为它可以在notebook中显示动画。

首先,我们生成3D数据。

import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt


def f(x, y):
    return np.sin(np.sqrt(x**2 + y**2))


x = np.linspace(-6, 6, 30)
y = np.linspace(-6, 6, 30)
X, Y = np.meshgrid(x, y)
Z = f(X, Y)

接下来,我们创建一个3D图形,其数据为之前的数据。plt.show()方法可以显示静态的3D图形。

fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(X, Y, Z)
plt.show()

现在,让我们尝试制作一个动画。具体来说,每一帧都会旋转3D图形一次。接下来的代码就可以实现这个效果。

import matplotlib.animation as animation


# 更新函数,其中num表示第几帧
def update(num):
    ax.view_init(azim=num)
    return ax,


# 初始化图形,返回这个图形的中的对象列表
def init():
    return ax,


# 创建图形
fig = plt.figure()
ax = Axes3D(fig)

# 生成数据
x = np.linspace(-6, 6, 30)
y = np.linspace(-6, 6, 30)
X, Y = np.meshgrid(x, y)
Z = f(X, Y)

# 画图
ax.plot_surface(X, Y, Z)
ani = animation.FuncAnimation(fig, update, 360, init_func=init)

# 显示动画
# 在一些python IDE中可能需要这行代码才能显示动画
plt.rcParams['animation.html'] = 'jshtml'
ani

总结

在制作这个动画的过程中,我们只使用了套路的Matplotlib代码。Matplotlib是一个相当强大的数据可视化工具,如此便利的动画制作也是其中的一大优点之一。希望通过这篇文章,您可以使用制作出类似的动画并获得可视化的乐趣。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程