如何在 Matplotlib 中创建曲面图

Suraj Joshi 2024年2月15日
如何在 Matplotlib 中创建曲面图

在 Matplotlib 中,我们使用 mplot3d 工具包进行 3-D 分析和可视化,其中包含基于 Matplotlib 的 2-D 函数构建的 3-D 绘图方法。我们可以通过将 projection='3d'参数传递给 Matplotlib 中任何轴的创建函数来创建 3-D 轴。初始化 3-D 轴后,我们可以使用 plot_surface() 方法生成曲面图。

Axes3D.plot_surface() 方法

我们可以使用 Axes3D.plot_surface(X, Y, Z, *args, **kwargs) 方法创建表面图其中 X,Y 和 Z 均为二维数组。

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

fig = plt.figure(figsize=(8, 6))
ax3d = plt.axes(projection="3d")

xdata = np.linspace(-3, 3, 100)
ydata = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(xdata, ydata)
Z = 1 / (1 + np.exp(-X - Y))

ax3d = plt.axes(projection="3d")
ax3d.plot_surface(X, Y, Z, cmap="plasma")
ax3d.set_title("Surface Plot in Matplotlib")
ax3d.set_xlabel("X")
ax3d.set_ylabel("Y")
ax3d.set_zlabel("Z")

plt.show()

使用 plot_surface 在 matplotlib 中绘制曲面图

这样,Matplotlib 会在 3D 空间中生成曲面图。这里的 cmap 参数用于在 3D 色彩空间中很好地表示我们的数据。图的颜色随因变量值的变化而变化。

我们可以根据以下参数自定义图:

  • rstride:行步长,默认值为 10
  • cstride:列步长,默认值为 10
  • color:表面的颜色
  • cmap:表面的颜色图
  • facecolors:表面中每个补丁的面部颜色
  • norm:Normalize 的一个实例,用于将值映射到颜色
  • vmin:要映射的最小值
  • vmax:要映射的最大值
  • shade:是否遮罩脸部颜色
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d

fig = plt.figure(figsize=(8, 6))
ax3d = plt.axes(projection="3d")

xdata = np.linspace(-3, 3, 100)
ydata = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(xdata, ydata)
Z = 1 / (1 + np.exp(-X - Y))

ax3d = plt.axes(projection="3d")
surf = ax3d.plot_surface(X, Y, Z, rstride=7, cstride=7, cmap="viridis")
fig.colorbar(surf, ax=ax3d)
ax3d.set_title("Surface Plot in Matplotlib")
ax3d.set_xlabel("X")
ax3d.set_ylabel("Y")
ax3d.set_zlabel("Z")

plt.savefig("Customized Surface Plot.png")

plt.show()

定制曲面图

在这个例子中,我们通过使用 colorbar() 方法在图形中添加一个颜色条,并将表面绘图对象传递给该方法,这使图形更具信息性。

作者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn