plotly to_html()方法的输出未显示在Jupyter Notebook中

问题描述 投票:0回答:1

使用 to_hmtl 方法从绘图创建 html 时,使用 JupyterLab 时可以使用 display(HTML(x)) 正确显示生成的 html,但使用 Jupyter Notebook 时无法正确显示(不显示任何内容)。

此外,当尝试使用 nbconvert 将 Jupyter Lab 笔记本导出到 hmtl 时,生成的 html 中未正确显示绘图(尽管它们在 JupyterLab 笔记本中正确呈现)

Python代码

# Import libraries
import plotly.graph_objs as go
from IPython.display import HTML, display

# Sample data
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# Create trace and figure
trace = go.Scatter(x=x, y=y)
fig = go.Figure(data=[trace])

# Generate html figure
html_fig = fig.to_html()

# Display the html figure (Works in JupyterLab. Does not work in Jupyter Notebook)
display(HTML(data=html_fig))

将 Notebook 转换为 html 的终端代码

jupyter nbconvert --to html PlotlyToHtml.ipynb

版本

  • JuypterLab = 3.6.3
  • 笔记本 = 6.5.4
  • Python = 3.10.13
  • 绘图= 5.9.0
  • IPython = 8.15.0
  • nbconvert = 6.5.4

我尝试过(没有成功)

  1. 显式设置pio渲染器
    按照一些旧帖子中的建议,在 jupyter 笔记本的开头将 pio 渲染器设置为“笔记本”(以及所有其他可用的渲染器类型)
import plotly.io as pio
pio.renderers.default="notebook" # jupyterlab, vscode, ...
  1. 将 html 包裹在 iframe 中
    按照此处的建议将 html 图包装在 iframe 中:https://github.com/microsoft/vscode-jupyter/issues/3654
html_fig_modified = (
    """<iframe sandbox='allow-scripts allow-forms' style='display:block; margin:0px;' frameborder='0' srcdoc='
<!DOCTYPE html>"""
    + html_fig
    + """ />"""
)

HTML(html_fig_modified)
  1. 导入holoview以允许使用nbconvert导出
    我尝试在 jupyter 笔记本的最开始导入 Holoview(如此处建议https://github.com/plotly/plotly.py/issues/1033),看看导出后是否至少可以看到交互式图形使用 nbconvert 生成 html。 导出的 html 仍然无法正确渲染交互式图形。
import holoviews as hv
hv.extension("plotly")
  1. 将笔记本模式设置为已连接
    我尝试按照一些帖子中的建议将笔记本模式设置为连接。
from plotly.offline import init_notebook_mode
init_notebook_mode(connected=True)
jupyter-notebook plotly ipython jupyter-lab nbconvert
1个回答
0
投票

我也有同样的行为。我查看了情节代码,他们似乎非常意识到这一点。

.show
方法似乎编写了一个临时html文件,然后使用显示的iframe html代码来可视化临时文件。

© www.soinside.com 2019 - 2024. All rights reserved.