使用Matplotlib在Python中绘制3D表面图

2025年1月5日 | 阅读6分钟

3D 曲面图是在笛卡尔坐标系中表示三维曲面的图形表示。它是可视化三维空间中的数学函数或一组数据点的一种方式。在这样的图中,x 轴和 y 轴表示自变量,z 轴表示因变量。

3D Surface Plotting in Python Using Matplotlib

Matplotlib

Matplotlib 是一个流行的绘图库,在 Python 编程中得到了广泛的应用。它提供了各种工具来创建各种图表、图示和可视化。使用 Matplotlib,您可以生成 3D 图并添加曲面图、颜色映射、标签、颜色条和其他图元素。此外,Matplotlib 提供了 plot_surface 函数用于 3D 曲面绘图以及其他函数来修改图的外观。

在本文中,让我们探索绘制 3D 曲面的不同方法。

马鞍面

示例

下面是一个名为“马鞍面”的 3D 曲面图的示例程序。

程序

输出

3D Surface Plotting in Python Using Matplotlib

说明

该程序首先导入必要的库,例如 numpy、matplotlib.pyplot 和 mpl_toolkits.mplot3d,分别用于数值运算、绘图和 3D 绘图功能。

该程序使用 numpy.linspace() 在 x 和 y 轴上生成等间隔值,然后使用 numpy.meshgrid() 创建坐标的二维网格。接下来,根据数学函数计算 z 值。在这种情况下,z = x**2 - y**2 对应于马鞍形曲面。该程序使用 plot_surface 函数生成 3D 曲面图,其中 cmap='viridis' 参数指定用于为曲面着色的颜色映射。该程序为 X、Y 和 Z 轴设置标签,并为图形添加标题以方便理解。此外,还为图形添加了颜色条。最后,程序显示图形。

正弦波曲面

示例

下面是一个正弦波支撑曲面 3D 图的示例程序。

程序

输出

3D Surface Plotting in Python Using Matplotlib

说明

在此程序中,我们创建了一个马鞍面。我们导入了必要的库,例如 matplotlib、numpy 和 mpl_toolkits。在创建图形之前,我们使用 linspace() 和 meshgrid() 方法创建了一个二维网格曲面。这些方法创建了一个类似网格的曲面。z 值根据到原点的距离的正弦波函数进行计算。函数 z = sin(sqrt(x**2 + y**2)) 生成了一个呈正弦波形状振荡的曲面。为了生成 3D 曲面图,我们使用了 plot_surface 函数。cmap='coolwarm' 参数确定了用于为曲面着色的颜色图。我们为 X、Y 和 Z 轴设置了标签,并为图形添加了标题以方便理解。设置好所有内容后,我们显示了图形。

高斯曲面

示例

这是一个生成高斯曲面图的示例程序

程序

输出

3D Surface Plotting in Python Using Matplotlib

说明

此代码通过利用 matplotlib 库生成高斯分布的 3D 曲面图。numpy 模块创建 x 和 y 值的网格,然后根据高斯函数计算 z 值:z = exp(-(x**2 + y**2) / 10)。这会生成一个类似于以原点为中心的钟形高斯分布的曲面图。为了创建 3D 子图,使用了 matplotlib.pyplot 和 mpl_toolkits.mplot3d 模块,其中还包括高斯曲面图、带有“plasma”颜色图的颜色条以及 X、Y 和 Z 轴的标签。生成的图形清晰且美观地表示了高斯分布。

环面曲面图

示例

这是一个创建环面曲面图的示例程序。

程序

输出

3D Surface Plotting in Python Using Matplotlib

说明

此程序使用 matplotlib 库创建了一个表示环面的 3D 曲面图。numpy 库创建了 theta 和 phi 值的网格,然后使用这些值计算三维空间中的环面坐标。环面由 x、y 和 z 的参数方程定义,其中参数 R 和 r 分别确定了长半径和短半径。生成的曲面图展示了环面特征性的甜甜圈形状,其中外圆代表长半径 R,较小的圆形横截面对应于短半径 r。为了创建 3D 子图,使用了 matplotlib.pyplot 和 mpl_toolkits.mplot3d 模块,并添加了环面曲面图。包含了一个带有“magma”颜色图的颜色条,并设置了 X、Y 和 Z 轴的标签。该图形在三维空间中提供了环面的视觉吸引力表示。

3D 曲面图

示例

让我们看一个创建 3D 曲面图的示例程序。

程序

输出

3D Surface Plotting in Python Using Matplotlib

说明

以下 Python 脚本已修改为使用 matplotlib 库生成 3D 曲面图。此图展示了一个由变量 X 和 Y 定义的数学函数。脚本通过更正 Z 值表达式,将 X**2 和 Y**2 项括在括号中,确保正确计算。

该代码使用 NumPy 库在指定范围内生成 X 和 Y 的网格。更正后的函数 Z = X * np.exp(-X**2 - Y**2) 定义了每个坐标处曲面的高度。使用 plot_surface 函数渲染生成的曲面图,并添加了颜色图('viridis')以增强可视化效果以及边缘着色以区分曲面边界。

子图使用了适当的轴标签和标题进行格式化,以便更轻松地解释图形。该图形在三维空间中以图形方式表示了修改后的数学函数,颜色图有助于感知函数值中的变化。

结论

总之,在 Python 中创建 3D 曲面图是表示三维数据的一种视觉上引人入胜且富有洞察力的方式。借助 Matplotlib 和 mpl_toolkits.mplot3d 等强大库,开发人员可以轻松创建交互式且可自定义的可视化。通过使用 NumPy 进行数据处理和 Matplotlib 的复杂绘图功能,用户可以将原始数值数据转换为动态且美观的曲面,从而揭示数据中的模式、趋势和关系。无论是可视化数学函数、科学模拟还是真实世界数据集,在 Python 中绘制 3D 曲面图都为研究人员、工程师和数据科学家提供了强大的工具,让他们能够更深入地了解数据多维的本质。旋转、缩放和探索这些曲面的能力增强了复杂信息的解释性,使 Python 成为创建身临其境且信息丰富的 3D 可视化的宝贵平台。