使用Python Bokeh export_png函数,我们可以将对象导出到png文件。但是,我找不到任何方法指定产生的png文件大小/分辨率。
我偶然发现我在Windows和Linux中使用了相同的代码并获得了不同的png文件。在Windows中,分辨率要低得多。
我了解我们可以使用export_svgs()获得更好的图形文件。但是与export_png()相比,export_svgs()有很多限制。我们不能在div,列或行对象上使用export_svgs()。
答案 0 :(得分:1)
在最近的足够版本中,export_png
接受width
和height
参数:
https://bokeh.pydata.org/en/latest/docs/reference/io.html#bokeh.io.export_png
如果它们在当前安装中不可用,则您需要将Bokeh安装更新为较新的版本。
答案 1 :(得分:0)
当使用export_png
(@bigreddot在他的回答中说)导出图时,有一种提高分辨率的方法,即直接在方法中设置宽度和高度:
export_png(p2, filename="plot.png", height=300, width=300)
问题在于,无论图形有多大,轴和字体大小始终保持相同:
export_png(p2, filename="plot.png", height=1200, width=1200)
目前可能的解决方案是update the axis attributes manually。我认为一个简单的解决方法是在导出之前按比例增加轴和字体的大小。
此外,如果要同时保存许多画布(每个画布元素都有一个图),则可以使用JavaScript方法canvas.toDataUrl()
将画布转换为base64形式的png。当您获得所有图像时,您可以对它们进行任何操作。这些图像具有96dpi的分辨率,无法更改,因此,如果要获得更高的分辨率,则还必须在转换之前更新绘图的所有元素的大小:字体,轴,绘图大小...
如果使用最后一种方法,则不需要安装selenium
和phantomjs
依赖项
无论如何,如果您等待2.0版本,您将获得this for gridplots:
在bokeh 2.0上,gridplot()将产生单个画布GridPlot模型的实例。现有的GridBox布局仍然可以使用旧的行为。