如何使用Bokeh保存为png或jpg而不是html文件?

24 投票
2 回答
29616 浏览
提问于 2025-04-18 08:43

我需要把我用Bokeh制作的图表和图形导出成图片。

通常我会这样做:

output_file("test.html")

不过,我想把这个图复制到Excel表格里。它不需要再是互动的,虽然如果能互动那就太好了。请问我该怎么把这个图导出成图片呢?我想用代码来实现,而不是点击“预览/保存”。

2 个回答

0

另外,如果你愿意使用JavaScript的话,比如说你想同时保存多个画布(每个画布都有一个图表),你可以用JavaScript的方法 canvas.toDataUrl() 把画布转换成png格式的base64编码。拿到所有的图片后,你可以随意处理这些图片。这些图片的分辨率是96dpi,无法更改,所以如果你想要更高的分辨率,就得在转换之前调整图表中所有元素的大小,比如字体、坐标轴、图表大小等等。

如果你采用这种方法,就不需要在你的Python环境中安装 seleniumphantomjs 这些依赖了。

另外,要注意的是,如果你使用 export_png 并且导出的图表尺寸更大,那么坐标轴和字体的大小不会成比例增大

15

从 Bokeh 的版本 0.12.6 开始,你可以直接通过 Python 代码导出 PNG 和 SVG 格式的图像了。

导出 PNG 图像的代码示例如下:

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

而导出 SVG 图像的代码示例如下:

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

不过,有一些可选的依赖库需要先安装。你可以在 用户指南的导出图表部分 找到更多信息。

撰写回答