Matplotlib 3D 绘图

Matplotlib 3D 绘图

参考:matplotlib 3d plotting

Matplotlib 是一个非常流行的 Python 绘图库,它提供了大量的工具来帮助开发者进行数据可视化。虽然 Matplotlib 主要被用于二维图形的绘制,但它也支持基本的三维图形。在本文中,我们将深入探讨如何使用 Matplotlib 绘制三维图形,并通过一系列的示例代码来展示其强大的功能。

1. 准备工作

在开始之前,确保你已经安装了 Matplotlib。如果还没有安装,可以通过以下命令进行安装:

pip install matplotlib

2. 绘制三维散点图

三维散点图是三维数据可视化中最基本的图形之一。下面的示例代码展示了如何绘制一个简单的三维散点图。

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

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = [1, 2, 3, 4, 5]
y = [5, 6, 2, 3, 13]
z = [2, 3, 3, 3, 5]

ax.scatter(x, y, z)
ax.set_title('3D Scatter Plot - how2matplotlib.com')
plt.show()

Output:

Matplotlib 3D 绘图

3. 绘制三维线图

三维线图可以帮助我们理解数据点之间的关系。以下代码展示了如何创建一个三维线图。

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

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

t = np.linspace(0, 2*np.pi, 100)
x = np.sin(t)
y = np.cos(t)
z = t

ax.plot(x, y, z, label='3D Line Plot - how2matplotlib.com')
ax.legend()

plt.show()

Output:

Matplotlib 3D 绘图

4. 绘制三维曲面图

三维曲面图是展示三维空间中函数关系的有效方式。下面的代码演示了如何绘制一个三维曲面图。

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

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))

ax.plot_surface(x, y, z, cmap='viridis')
ax.set_title('3D Surface Plot - how2matplotlib.com')

plt.show()

Output:

Matplotlib 3D 绘图

5. 绘制三维条形图

三维条形图可以用来展示三维数据的分布情况。以下代码展示了如何创建一个三维条形图。

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

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.arange(5)
y = np.random.rand(5)
z = np.zeros(5)

dx = np.ones(5)
dy = np.ones(5)
dz = [1, 2, 3, 4, 5]

ax.bar3d(x, y, z, dx, dy, dz)
ax.set_title('3D Bar Plot - how2matplotlib.com')

plt.show()

Output:

Matplotlib 3D 绘图

6. 绘制三维等高线图

三维等高线图(又称为轮廓图)可以帮助我们理解变量之间的关系。以下代码展示了如何绘制一个三维等高线图。

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

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))

ax.contour3D(x, y, z, 50, cmap='binary')
ax.set_title('3D Contour Plot - how2matplotlib.com')

plt.show()

Output:

Matplotlib 3D 绘图

7. 自定义三维图形的外观

在 Matplotlib 中,你可以自定义三维图形的许多外观属性,如颜色、透明度等。以下代码展示了如何自定义三维曲面图的外观。

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

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))

surf = ax.plot_surface(x, y, z, cmap='coolwarm', edgecolor='none')
fig.colorbar(surf)
ax.set_title('Customized 3D Surface Plot - how2matplotlib.com')

plt.show()

Output:

Matplotlib 3D 绘图

8. 三维图形的动画

Matplotlib 也支持三维图形的动画制作。以下代码展示了如何创建一个简单的三维曲面动画。

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

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

def update(frame):
    ax.clear()
    ax.set_title('3D Surface Animation - how2matplotlib.com')
    x = np.linspace(-5, 5, 50)
    y = np.linspace(-5, 5, 50)
    x, y = np.meshgrid(x, y)
    z = np.sin(np.sqrt(x**2 + y**2) + np.pi * frame / 50)
    ax.plot_surface(x, y, z, cmap='viridis')

ani = animation.FuncAnimation(fig, update, frames=100, interval=50)

plt.show()

结论

通过本文的介绍和示例代码,我们可以看到 Matplotlib 在三维数据可视化方面的强大功能。无论是基本的三维散点图、线图、曲面图,还是更高级的三维条形图、等高线图以及三维图形的动画制作,Matplotlib 都能够提供简洁明了的接口来实现。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程