调用 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_notebook
和 show
)绝对不可能,因为一旦显示绘图,事物的 browser/JS 面就完全独立且不受“Python 方面”任何事物的束缚。可以想象这可能的唯一方法是:
向图中添加一个 SaveTool
并单击它的工具栏按钮——这会使用 he 从 JavaScript 生成一个 PNG “JS 端”的当前状态
改为嵌入 Bokeh 服务器应用程序。 Bokeh 服务器正是为保持“Python 端”和“JS 端”同步而存在的东西。但是您只能从设置的回调中调用 export_png
,例如在 Button
单击或点击或任何支持的事件上。它不适用于外部笔记本电池。
我在 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_notebook
和 show
)绝对不可能,因为一旦显示绘图,事物的 browser/JS 面就完全独立且不受“Python 方面”任何事物的束缚。可以想象这可能的唯一方法是:
向图中添加一个
SaveTool
并单击它的工具栏按钮——这会使用 he 从 JavaScript 生成一个 PNG “JS 端”的当前状态改为嵌入 Bokeh 服务器应用程序。 Bokeh 服务器正是为保持“Python 端”和“JS 端”同步而存在的东西。但是您只能从设置的回调中调用
export_png
,例如在Button
单击或点击或任何支持的事件上。它不适用于外部笔记本电池。