在Bokeh中保存带图片的HTML文件

4

我正在创建一个包含多个图像的bokeh绘图。我按照以下方式创建并显示文件:

output_file(my_dir + "Graphs\\graph")
show(bar)

然后它向我展示了绘图并在我的“Graphs”目录中创建了一个graph.html文件。但是当我稍后打开html文件时,图表中不包含图片。 我该如何保存html文件,以便它也包含图片?

2个回答

28

正如文档中所述,你有两种方法来实现这个:

from bokeh.plotting import figure, output_file, save
p = figure(title="Basic Title", plot_width=300, plot_height=300)
p.circle([1, 2], [3, 4])
output_file("test.html")
save(p)
  • 使用低级别的file_html函数

  • from bokeh.plotting import figure
    from bokeh.resources import CDN
    from bokeh.embed import file_html
    
    plot = figure()
    plot.circle([1,2], [3,4])
    
    html = file_html(plot, CDN, "my plot")
    
    with open("/myPath.html") as f:
        f.write(html)
    

    在这种情况下,可能是CSS/JS资源的问题。您能否在打开HTML文件时分享Chrome控制台的截图? - filaton
    它说: [bokeh] ImageURL在0次重试后无法加载[mypath]图像但是这些图像的路径为[mypath]。 - Axolotl
    路径看起来像这样 "file:\C:\Users\mydir\projects\image1.png" - Axolotl
    哦,现在它可以工作了。我曾经在 Pycharm 中打开 HTML 文件,但是直接从文件夹中打开它们就可以了 :) - Axolotl
    1
    尝试使用os库来处理路径...它可以避免很多麻烦。 - renzop
    显示剩余2条评论

    12

    如果遇到问题(特别是在离线环境下工作时),您可能需要考虑添加mode='inline'参数:

    output_file('plot.html', mode='inline')
    

    这样可以确保所需的js/css被包含在您的输出html中。这样,您就可以创建一个独立的html文件。

    结合现有代码,这将导致:

    from bokeh.plotting import figure, output_file, save
    p = figure(title="Basic Title", plot_width=300, plot_height=300)
    p.circle([1, 2], [3, 4])
    output_file('plot.html', mode='inline')
    save(p)
    

    请参考此答案以获取更多信息。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接