Matplotlib 绘制 3D 图形

Matplotlib 绘制 3D 图形

参考:matplotlib 3d plot

在数据可视化领域,Matplotlib 是一个强大且灵活的库,提供了丰富的绘图功能,在数据分析和学术研究中被广泛使用。其中,Matplotlib 的 3D 绘图功能能够让我们更好地展示三维数据,帮助我们更直观地理解数据之间的关系。本文将介绍如何使用 Matplotlib 绘制 3D 图形,包括绘制散点图、曲面图、等高线图等。

一、创建 3D 图形

1. 创建 3D 图形对象

在绘制 3D 图形之前,首先需要创建一个 3D 图形对象。这可以通过 Axes3D 类中的 add_subplot 方法来实现。

import matplotlib.pyplot as plt
import numpy as np

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

2. 定义数据

接下来,我们需要定义需要绘制的数据。这里我们以一个简单的例子来说明,生成一组随机的三维数据。

x = np.random.rand(100)
y = np.random.rand(100)
z = np.random.rand(100)

3. 绘制 3D 散点图

使用 scatter 方法可以绘制 3D 散点图。

import matplotlib.pyplot as plt
import numpy as np

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

ax.scatter(x, y, z)
plt.show()

Output:

Matplotlib 绘制 3D 图形

4. 绘制 3D 曲线图

通过 plot 方法可以绘制 3D 曲线图。

import matplotlib.pyplot as plt
import numpy as np

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

ax.plot(x, y, z)
plt.show()

Output:

Matplotlib 绘制 3D 图形

二、绘制 3D 曲面图

1. 生成网格数据

首先,我们需要生成网格数据,以便绘制曲面图。这里以生成二维网格数据为例。

import matplotlib.pyplot as plt
import numpy as np

X, Y = np.meshgrid(np.linspace(-5, 5, 100), np.linspace(-5, 5, 100))
Z = np.sin(np.sqrt(X**2 + Y**2))

2. 绘制 3D 曲面图

使用 plot_surface 方法可以绘制 3D 曲面图。

import matplotlib.pyplot as plt
import numpy as np

X, Y = np.meshgrid(np.linspace(-5, 5, 100), np.linspace(-5, 5, 100))
Z = np.sin(np.sqrt(X**2 + Y**2))

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)
plt.show()

Output:

Matplotlib 绘制 3D 图形

三、绘制 3D 等高线图

1. 生成等高线数据

同样,我们需要生成等高线数据,以便绘制 3D 等高线图。

import matplotlib.pyplot as plt
import numpy as np

X, Y = np.meshgrid(np.linspace(-5, 5, 100), np.linspace(-5, 5, 100))
Z = np.sin(np.sqrt(X**2 + Y**2))

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.contour(X, Y, Z)
plt.show()

Output:

Matplotlib 绘制 3D 图形

2. 绘制 3D 等高线图

使用 contourf 方法可以绘制 3D 填充等高线图。

import matplotlib.pyplot as plt
import numpy as np

X, Y = np.meshgrid(np.linspace(-5, 5, 100), np.linspace(-5, 5, 100))
Z = np.sin(np.sqrt(X**2 + Y**2))

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.contourf(X, Y, Z)
plt.show()

Output:

Matplotlib 绘制 3D 图形

四、调整 3D 图形样式

1. 更改点的颜色和大小

可以通过 c 参数指定点的颜色,通过 s 参数指定点的大小。

import matplotlib.pyplot as plt
import numpy as np

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

ax.scatter(x, y, z, c='r', s=100)
plt.show()

Output:

Matplotlib 绘制 3D 图形

2. 添加图例

使用 legend 方法可以添加图例。

import matplotlib.pyplot as plt
import numpy as np

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

ax.scatter(x, y, z, label='data')
ax.legend()
plt.show()

Output:

Matplotlib 绘制 3D 图形

3. 添加坐标轴标签

使用 set_xlabelset_ylabelset_zlabel 方法可以添加坐标轴标签。

import matplotlib.pyplot as plt
import numpy as np

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

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()

Output:

Matplotlib 绘制 3D 图形

五、保存 3D 图形

可以使用 savefig 方法将 3D 图形保存为图片。

plt.savefig('3d_plot.png')

通过以上示例,我们学习了如何使用 Matplotlib 绘制 3D 图形,包括散点图、曲面图和等高线图等。Matplotlib 提供了丰富的功能和灵活的参数设置,可以满足各种不同的绘图需求。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程