调用 export_png 时未反映对散景图的更改(例如缩放)

Changes to Bokeh plot (e.g. zooming) not reflected when calling export_png

我在 Jupyter 笔记本中有一个可以缩放和平移的散景图。在稍后的笔记本单元格中,我想调用 Bokeh 的 export_png 函数以完全按照显示的方式导出图,但是,导出的图不会反映图的当前缩放状态。

例如

from bokeh.plotting import figure, show

# prepare some data
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]

# create a new plot with a title and axis labels
p = figure(title="Simple line example", x_axis_label="x", y_axis_label="y")

# add a line renderer with legend and line thickness
p.line(x, y, legend_label="Temp.", line_width=2)

# show the results
show(p)

然后在后面的单元格中:

from bokeh.io import export_png

export_png(p, filename="plot_test.png")

我可以单击绘图工具栏中的“保存”按钮,这将保存绘图,与当前缩放状态下在笔记本中显示的完全一样,但是我很好奇是否可以通过编程方式执行此操作在笔记本里?

这对于基本的独立输出(即绘图对象上的 output_notebookshow)绝对不可能,因为一旦显示绘图,事物的 browser/JS 面就完全独立且不受“Python 方面”任何事物的束缚。可以想象这可能的唯一方法是:

  • 向图中添加一个 SaveTool 并单击它的工具栏按钮——这会使用 he 从 JavaScript 生成一个 PNG “JS 端”的当前状态

  • 改为嵌入 Bokeh 服务器应用程序。 Bokeh 服务器正是为保持“Python 端”和“JS 端”同步而存在的东西。但是您只能从设置的回调中调用 export_png,例如在 Button 单击或点击或任何支持的事件上。它不适用于外部笔记本电池。