📜  在Python中使用 Plotly 绘制 3D 曲面图(1)

📅  最后修改于: 2023-12-03 15:37:37.672000             🧑  作者: Mango

在Python中使用 Plotly 绘制 3D 曲面图

Plotly 是一个基于开源的 JavaScript 图形库,它可以很方便地创建交互式的图表和数据可视化。在 Python 中,我们可以使用 Plotly 的 Python API 来使得绘制交互式图形变得更加容易。其中,3D 曲面图是其中一个重要的可视化形式。

安装依赖

Plotly 的 Python API 依赖于以下库:

  • plotly
  • pandas
  • numpy

可以使用 pip 命令来安装这些依赖:

pip install plotly pandas numpy
绘制 3D 曲面图

下面我们来看一个简单的例子,用 Plotly 绘制 3D 曲面图。我们将使用 numpy 生成一个函数 z = f(x, y),然后用 Plotly 绘制这个函数在三维空间中的图像。

import numpy as np
import plotly.graph_objs as go

# 生成 x, y 轴的数据,间隔为 0.1
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)

# 生成 x, y 矩阵
xx, yy = np.meshgrid(x, y)

# 计算 z = f(x, y) 的值
zz = np.sin(np.sqrt(xx**2 + yy**2)) / (np.sqrt(xx**2 + yy**2))

# 绘制 3D 曲面图
fig = go.Figure(data=[go.Surface(z=zz)])
fig.update_layout(title='3D Surface Plot')
fig.show()

上面的代码中,我们首先生成了 xy 轴的数据,并计算出 xy 矩阵,通过这两个矩阵以及一个自定义函数计算出 z 轴的数据 zz

然后,我们用 Plotly 的 Surface 类创建了一个 3D 曲面图,并将 zz 作为 z 轴数据传入。最后,我们还调用了 update_layout 方法来设置图表的标题,并用 show 方法将图表显示出来。

3D Surface Plot

自定义 3D 曲面图

上面的例子只是展示了如何用 Plotly 绘制一个简单的 3D 曲面图。实际上,你可以通过自定义许多参数来使得图表更加美观、更具功能性。

下面是一些常用的参数:

  • x, y, z:分别代表 x, y 和 z 轴的数据,可以是列表或者 numpy 数组。
  • colorscale:用于指定颜色映射规则,可以是预定义的颜色映射如 'Viridis''Cividis''Blackbody' 等,也可以自定义所需颜色映射。
  • surfacecolor:用于指定曲面颜色,可以是颜色名称或者数组。
  • opacity:用于指定曲面不透明度,取值范围为 $[0, 1]$。
  • contours:用于指定曲面轮廓线,包括以下参数:x, y, z, show, color, size 等。

我们来看一个例子,用上述参数自定义一个 3D 曲面图:

import numpy as np
import plotly.graph_objs as go

# 生成 x, y 轴的数据,间隔为 0.1
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)

# 生成 x, y 矩阵
xx, yy = np.meshgrid(x, y)

# 计算 z = f(x, y) 的值
zz = np.sin(np.sqrt(xx**2 + yy**2)) / (np.sqrt(xx**2 + yy**2))

# 自定义 3D 曲面图
fig = go.Figure(data=[go.Surface(
    x=xx,
    y=yy,
    z=zz,
    colorscale='Rainbow',
    surfacecolor=zz,
    opacity=0.8,
    contours=dict(
        x=dict(show=True, color='white', size=0.2),
        y=dict(show=True, color='white', size=0.2),
        z=dict(show=True, color='white', size=0.2)
    )
)])
fig.update_layout(title='3D Surface Plot (Customized)')
fig.show()

上面的代码中,我们使用了 x, y, z 参数来指定三个轴的数据,用了自定义的颜色映射、曲面颜色和不透明度,并使用了 contours 参数自定义轮廓线的样式。

3D Surface Plot (Customized)

结论

Plotly 是一个非常强大的交互式图形库,可以帮助我们创建各种各样的图表和数据可视化。本文介绍了如何在 Python 中使用 Plotly 绘制 3D 曲面图,包括了如何安装依赖、绘制 3D 曲面图以及自定义 3D 曲面图。我们希望这篇文章可以帮助到大家,帮助大家更好地使用 Plotly 绘制交互式图表。