【问题标题】:With Bokeh, how to save to a png or jpg instead of a html file?使用 Bokeh,如何保存为 png 或 jpg 而不是 html 文件?
【发布时间】:2023-09-12 10:20:01
【问题描述】:

我需要导出使用 Bokeh 创建的图形和绘图的图片。

我经常这样做

output_file("test.html")

但是,我想将该图表复制到 Excel 工作表中。 它不再必须是交互式的,尽管那会很棒。 如何将图表导出为图片?使用代码,而不是点击“预览/保存”。

【问题讨论】:

  • 恕我直言,html是散景session management的唯一(文件)选项,您可以使用this将html转换为jpg。
  • 我没有安装 PyQt 的权限。
  • 试试this 发帖。
  • 在我看来它只适用于文本。

标签: python bokeh


【解决方案1】:

从 Bokeh 0.12.6 开始,现在可以直接从 Python 代码。

导出 PNG 看起来像这样

export_png(plot, filename="plot.png")

导出 SVG 看起来像这样

plot.output_backend = "svg"
export_svgs(plot, filename="plot.svg")

有一些可选的依赖项需要安装。 您可以在Exporting Plots section of the User Guide找到更多信息。

【讨论】:

  • export_png函数增加了我的运行时间大约15秒,你有同样的体验吗?
  • 是的,我也遇到过这种情况
【解决方案2】:

或者,如果您愿意使用 JavaScript。并且,例如,如果您想同时保存许多画布(每个画布元素都有一个绘图),您可以使用 JavaScript 方法canvas.toDataUrl() 将画布转换为 base64 格式的 png。当您获得所有图像时,您可以对它们做任何您想做的事情。这些图像具有 96dpi 且无法更改,因此如果您想要更高的分辨率,您还必须在转换之前更新绘图的所有元素的大小:字体、轴、绘图大小...

如果您使用这种方法,则无需在您的 python 环境中安装 seleniumphantomjs 依赖项。

另外,请注意,如果您使用 export_png 并导出更大尺寸的绘图,the axis and fonts are not going to be proportionally bigger

【讨论】:

    最近更新 更多