【问题标题】:Can we specify bokeh exported png file size / resolution?我们可以指定散景导出的 png 文件大小/分辨率吗?
【发布时间】:2018-12-20 00:32:22
【问题描述】:

使用 Python Bokeh export_png 函数,我们可以将对象导出为 png 文件。但是,我找不到任何方法来指定生成的 png 文件大小/分辨率。

我发现我在 Windows 和 Linux 中使用了相同的代码并获得了不同的 png 文件。在 Windows 中,分辨率要低得多。

我知道我们可以使用export_svgs() 来获得更好的图形文件。但与export_png()相比,export_svgs()有很多局限性。我们不能在 div、column 或 row 对象上使用export_svgs()

【问题讨论】:

  • 您可以使用代码标签format code,尝试用反引号将命令括起来(`
  • 对不起,我不太明白你的评论。我在 Python 中使用 Bokeh。

标签: python export png bokeh


【解决方案1】:

在最近的版本中,export_png 接受 widthheight 参数:

https://docs.bokeh.org/en/latest/docs/reference/io.html#bokeh.io.export_png

如果它们在您当前的安装中不可用,那么您需要将您的 Bokeh 安装更新为更新的版本。

【讨论】:

  • 感谢您的帮助。在我当前的 0.12.16 版本中,我们有宽度和高度参数。但是,它们仅适用于 Plot 对象,与 export_svgs() 相同。理想情况下,该解决方案适用于所有对象,包括 column() 和 row()
【解决方案2】:

当使用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 且无法更改,因此如果您想要更高的分辨率,您还必须在转换之前更新绘图的所有元素的大小:字体、轴、绘图大小...

如果使用最后一种方法,则不需要安装 seleniumphantomjs 依赖项

无论如何,如果您等待 2.0 版本,您将获得this for gridplots

在 bokeh 2.0 中,gridplot() 将生成单个画布 GridPlot 模型的实例。现有的 GridBox 布局仍然可以使用旧的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-31
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多