Bokeh 如何把图表导出为 PNG 或 SVG?Playwright 导出后端与透明背景配置

发布时间:2026/9/15 10:43:22
Bokeh 如何把图表导出为 PNG 或 SVG?Playwright 导出后端与透明背景配置 Bokeh 如何把图表导出为 PNG 或 SVGPlaywright 导出后端与透明背景配置【免费下载链接】bokehInteractive Data Visualization in the browser, from Python项目地址: https://gitcode.com/GitHub_Trending/bo/bokeh如果你已经用 Bokeh 画好了图表想把它变成一张静态图片——放进文档、报告或者拿去在 Illustrator 之类的编辑器里继续加工——需要用到 Bokeh 的导出功能export_png、export_svg。导出过程会在内存中渲染布局并截取无头浏览器headless browser截图因此额外依赖一个浏览器后端。Bokeh 默认使用 Playwright并暂时保留已弃用的 Selenium 后端用于兼容。本文给出从安装依赖、选择后端到导出 PNG/SVG 文件并配置透明背景的一条完整操作路径。准备导出依赖安装 Playwright 后端导出功能需要一个无头浏览器。Playwright 是默认后端安装分两步先装 Bokeh 的可选 export 依赖pyproject.toml 中exportextra 要求playwright 1.49再装 Chromium 的 headless shellpip install bokeh[export] playwright install --only-shell chromium也可以直接安装playwright包Bokeh 只需要 Chromium 的 headless shell不需要另外管理浏览器驱动二进制文件。Selenium 后端自 4.0.0 起已弃用将在未来的版本中移除新代码请使用 Playwright。如果你确实要维护旧代码文档给出的安装方式是conda install selenium geckodriver -c conda-forgeFirefox且系统上需有版本兼容的 Firefox或conda install selenium python-chromedriver-binary -c conda-forgeChrome且需保证chromedriver可执行文件在 PATH 中、版本与本机 Chrome/Chromium 匹配也可以用pip安装selenium后自行下载 geckodriver 二进制。三种方式指定导出后端Bokeh 默认使用 Playwright。按优先级从高到低有三种方式指定后端1. 直接传入浏览器实例webdriver参数。任何导出函数都接受webdriver关键字参数可以传 SeleniumWebDriver或 PlaywrightBrowser/BrowserContext后端按实例类型自动识别并覆盖backend参数和全局设置。传 SeleniumWebDriver会发出弃用警告。2. 每次调用时传backend参数from bokeh.io import export_png export_png(plot, filenameplot.png, backendplaywright)3. 全局设置。通过环境变量或settings修改例如BOKEH_EXPORT_BACKENDplaywright python my_script.pyfrom bokeh.settings import settings settings.export_backend playwrightBOKEH_EXPORT_BACKEND的取值可以是auto、playwright或selenium。其中auto优先选 PlaywrightPlaywright 未安装时回落到弃用的 Selenium 后端两个后端都不可用时源码中的错误提示会告诉你如何安装见 src/bokeh/io/export.py 中_resolve_backend的提示以及 src/bokeh/settings.py 中export_backend的说明。导出 PNG用法与save、show类似from bokeh.io import export_png export_png(plot, filenameplot.png)要点输出图片是 RGBA 格式的 PNG尺寸与源布局一致所以在画 figure 时建议直接给定width、height例如 export_to_png.py 中的figure(width800, height300, ...)。响应式 sizing mode 可能生成尺寸和长宽比出乎意料的布局为了结果稳定文档建议使用默认的fixedsizing mode。filename不传时会从脚本名推导如/foo/myplot.py生成/foo/myplot.png。不想落盘、直接在代码中拿到图像对象时用底层的get_screenshot_as_pngfrom bokeh.io.export import get_screenshot_as_png image get_screenshot_as_png(obj, heightheight, widthwidth, driverwebdriver)配置透明背景要导出透明背景的 PNG把Plot.background_fill_color和Plot.border_fill_color都设为Noneplot.background_fill_color None plot.border_fill_color None导出后用返回值验证export_png会返回保存文件的绝对路径字符串据此确认文件位置如果布局渲染出的图像宽高为 0函数会抛出ValueError: unable to save an empty image此时应检查布局是否有有效的固定尺寸。导出 SVGSVG 导出会把 HTML5 Canvas 绘图输出替换为可在图像编辑软件中修改、或可转 PDF 的 SVG 元素。先启用 SVG 后端两种方式任选其一# 方式一创建时指定 plot Plot(output_backendsvg) # 方式二事后修改 plot.output_backend svg注意 SVG 后端在渲染大量 glyph 或处理平移等大量用户交互时性能不如默认 Canvas 后端——导出静态图没问题别把交互式应用整体切到 SVG 后端。然后按需求选择导出函数from bokeh.io import export_svg export_svg(plot, filenameplot.svg)export_svg把一个 plot 或一组 plot 的布局保存为单个 SVG 文件export_svgs把布局中每个 SVG 后端的 plot 导出为各自独立的 SVG 文件from bokeh.io import export_svgs export_svgs(plot, filenameplot.svg)SVG 的透明背景配置与 PNG 完全相同background_fill_color和border_fill_color设为None。export_svg返回保存的文件名列表可据此核对生成的文件。不写代码的替代路径可选使用 SVG-Crowbar bookmarklet会给页面上的每个 plot 添加下载为 SVG 的提示Chrome 完全兼容Firefox 大多数情况下可用使用工具栏里的SaveTool但注意导出文件在工具栏所在位置会留一块空白区域。参考导出功能完整文档docs/bokeh/source/docs/user_guide/output/export.rst可运行的 PNG 导出示例examples/output/export/export_to_png.py导出实现与后端解析逻辑src/bokeh/io/export.pyexport_backend设置含BOKEH_EXPORT_BACKEND环境变量src/bokeh/settings.py限制小结PNG 输出尺寸取决于布局本身响应式 sizing mode 下尺寸可能不符合预期SVG 后端牺牲交互性能换取可编辑的矢量输出Selenium 后端已弃用仅用于兼容旧环境。【免费下载链接】bokehInteractive Data Visualization in the browser, from Python项目地址: https://gitcode.com/GitHub_Trending/bo/bokeh创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考