将可旋转 3D 绘图从 Python 导出为 HTML

pel*_*tor 4 python matplotlib jupyter-notebook

我需要将可旋转 3D 绘图导出到 HTML,就像WriteWebGL 在 R 中所做的那样,但来自 Python / matplotlib。

当在 Jupyter 笔记本中运行时,您可以生成如下交互式绘图:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
...
ax.scatter3D(xdata, ydata, zdata, c=zdata, cmap='Greens');
Run Code Online (Sandbox Code Playgroud)

(此示例的源代码在这里

如前所述,用户可以旋转 3D 绘图。如何将这种交互性从 Python 导出为 HTML?

Joo*_*nas 5

一定是matplotlib吗?你可以用plotly来做到这一点。

这是一个简单的例子。这会修改一个名为 test.html 的现有空文件,然后您可以在 Web 浏览器中打开该文件以使用交互式 3D 绘图。

import plotly.graph_objects as go
import numpy as np
import plotly.express as px

# Helix equation
t = np.linspace(0, 20, 100)
x, y, z = np.cos(t), np.sin(t), t

fig = go.Figure(data=[go.Scatter3d(
    x=x,
    y=y,
    z=z,
    mode='markers',
    marker=dict(
        size=12,
        color=z,                # set color to an array/list of desired values
        colorscale='Viridis',   # choose a colorscale
        opacity=0.8
    )
)])

# tight layout
fig.update_layout(margin=dict(l=0, r=0, b=0, t=0))
fig.write_html("test.html") #Modifiy the html file
fig.show()
Run Code Online (Sandbox Code Playgroud)