1

我有一个绘制曲线的plot对象。bokehsin(x)

from math import *
from io import BytesIO
from bokeh.plotting import (figure, output_file, show)
from bokeh.io import (export_png, export_svgs)

import base64
import numpy as np

plot = figure(plot_width=1000, plot_height=500)

x = np.linspace(-2*np.pi, 2*np.pi, 1000)
y = np.array([sin(i) for i in x])

plot.line(x, y, line_width=1)

现在,我不想用某个名称将它保存到某个html文件中,output_file('sine.html')而是想创建一个BytesIO()对象,以便进一步进行base64编码。

我非常需要社区帮助。

我想要的原因是matplotlib我可以将图像导出为BytesIO()对象并使用它顺利地将其重新渲染FlaskDash像这样的应用程序,

figfile = BytesIO()
plt.savefig(figfile, format='png')
plt.clf()
figfile.seek(0)
figdata_png = base64.b64encode(figfile.getvalue())
return figdata_png.decode('UTF-8')

我希望与bokeh.

请指导我。

4

1 回答 1

2

Bokeh 在以下方面提供了此功能bokeh.io.export.get_screenshot_as_png

from bokeh.io.export import get_screenshot_as_png

img = get_screenshot_as_png(plot)

img是一个包含图像的 PIL 图像实例。

题外话:这也可用于在 JupyterLab 中将绘图显示为 PNG。只需打电话get_screenshot_as_png(plot),你就完成了。

于 2019-04-16T13:36:32.410 回答