Bokeh - 导出绘图

除上述子命令外,还可以使用 export() 函数将 Bokeh 图导出为 PNG 和 SVG 文件格式。 为此,本地 Python 安装应包含以下依赖库。


PhantomJS

PhantomJS 是一种 JavaScript API,可实现自动导航、屏幕截图、用户行为和断言。 它被用来运行基于浏览器的单元测试。 PhantomJS 基于 WebKit,为不同的浏览器提供相似的浏览环境,并为各种 Web 标准提供快速和原生支持:DOM 处理、CSS 选择器、JSON、Canvas 和 SVG。 换句话说,PhantomJS 是一个没有图形用户界面的 Web 浏览器。


Pillow

Pillow,一个 Python 图像库(以前称为 PIL)是一个免费的 Python 编程语言库,它支持打开、操作和保存许多不同的图像文件格式。 (包括 PPM、PNG、JPEG、GIF、TIFF 和 BMP。)它的一些功能包括逐像素操作、遮罩和透明度处理、图像过滤、图像增强等。

export_png() 函数根据布局生成 RGBA 格式的 PNG 图像。 该函数使用 Webkit headless 浏览器在内存中渲染布局,然后截屏。 生成的图像将与源布局的尺寸相同。 确保 Plot.background_fill_color 和 Plot.border_fill_color 的属性为 None。

from bokeh.io import export_png
export_png(plot, filename = "file.png")

HTML5 Canvas 可以使用 SVG 元素绘制输出,可以使用 Adobe Illustrator 等程序进行编辑。 SVG 对象也可以转换为 PDF。 在这里,canvas2svg,一个 JavaScript 库,用于模拟普通的 Canvas 元素及其带有 SVG 元素的方法。 与 PNG 一样,为了创建具有透明背景的 SVG,Plot.background_fill_color 和 Plot.border_fill_color 属性应该为 None。

SVG 后端首先通过将 Plot.output_backend 属性设置为"svg"来激活。

plot.output_backend = "svg"

对于 headless 导出,Bokeh 有一个实用函数 export_svgs()。 此函数会将布局中所有支持 SVG 的绘图下载为不同的 SVG 文件。

from bokeh.io import export_svgs
plot.output_backend = "svg"
export_svgs(plot, filename = "plot.svg")