Python 在Sphinx文档中嵌入plotly graph

Python 在Sphinx文档中嵌入plotly graph,python,plot,jupyter-notebook,plotly,python-sphinx,Python,Plot,Jupyter Notebook,Plotly,Python Sphinx,我尝试使用nbsphinx嵌入一个包含plotly plots的Jupyter笔记本,但是这些plots没有显示在文档中,即使它们在Jupyter笔记本上看起来很好 如何在斯芬克斯中嵌入绘图仪?我可以把它们作为图片,但是有更好的方法吗?有互动性就好了 我想做的是复制。它具有Jupyter笔记本风格的输入和输出块,并显示使用plotly制作的交互式绘图。我该怎么做 GitHub问题由Python引发,您可以使用Plotly.tools.get_embed函数生成HTML代码来嵌入Plotly图形

我尝试使用nbsphinx嵌入一个包含plotly plots的Jupyter笔记本,但是这些plots没有显示在文档中,即使它们在Jupyter笔记本上看起来很好

如何在斯芬克斯中嵌入绘图仪?我可以把它们作为图片,但是有更好的方法吗?有互动性就好了

我想做的是复制。它具有Jupyter笔记本风格的输入和输出块,并显示使用plotly制作的交互式绘图。我该怎么做


GitHub问题由Python引发,您可以使用Plotly.tools.get_embed函数生成HTML代码来嵌入Plotly图形

import plotly.tools as tls

tls.get_embed('https://plot.ly/~chris/1638')

我可以看到两种解决方案,在sphinx文档中嵌入带有绘图图形的笔记本单元

  • 使用nbconvert或nbsphinx将笔记本转换为html。确保使用
    笔记本
    渲染器以包含plotly javascript包(可能这就是图形未显示的原因):有关plotly渲染器的文档,请参阅。然后,您可以使用各种解决方案将html包含在sphinx文档中(请参阅)
  • 使用sphinx gallery()及其plotly刮刀。使用sphinx gallery,您可以将文档页面编写为python脚本,该脚本由sphinx的sphinx gallery扩展转换为rest。要配置刮板,请参阅。我们还有一个最小的存储库,展示如何在中同时使用plotly和sphinx gallery。

  • 图形本身是jupyter笔记本文件中的HTML。 您可以在任何文本编辑器中打开notebook.ipnb文件,找到图形的HTML开始的位置,将所有这些HTML复制到HTML文件并保存,比如a.HTML,然后在RST文档中插入原始HTML

    .. raw:: 
        :file: a.html
    
    您可以将与Plotly的组合使用:


    这里也有同样的问题。有。不知道如何从nbsphinx使用它。它还会弄乱我笔记本中的其他HTML单元格。@phantomas1234我已经用我提出的GitHub问题的链接更新了这个问题。尝试那里的解决方案,看看它是否适合您。使用plotly,您可以使用
    output\u type='div'
    输出html。使用新的
    FigureWidget
    更容易。如果有兴趣的话,我可以准备一个答案。这似乎对我的pdflatex不起作用……您在文档前面有没有jupyter execute设置?@MattRuge我没有尝试过LaTeX输出,所以我不知道。:-)我通过让jupyter执行转储IMG字节取得了一些进展,在latex pdf中显示为png``。。jupyter execute:::hide code:#创建图形###为简洁而编辑img#u bytes=fig.to_image(format=“png”)image(img#u bytes)``我相信plotly默认情况下不会生成静态打印,除非您使用显式配置它。我目前希望在Github存储库中有一个带有交互式plotly graph的README.rst文件,到目前为止,我已经设法使用静态图像创建了该文件。
    ... jupyter-execute::
    
       import plotly.graph_objects as go
    
       trace = go.Scatter(
           x=[0, 1, 2, 3, 4],
           y=[0, 1, 4, 9, 16],
       )
       layout = go.Layout(title='Growth')
       figure = go.Figure(data=[trace], layout=layout)
    
       go.FigureWidget(figure)