无法使用 Kaleido 将绘图图像导出为 png

问题描述 投票:0回答:7

我以前从未使用过plotly,我一直在尝试将示例图像代码导出为png。我已经安装了plotly和kaleido并在python 3上运行了代码,但是没有任何反应。

#Here is the code:

import plotly.express as px
import numpy as np
    
# RGB Data as numpy array
img_rgb = np.array([[[255, 0, 0], [0, 255, 0], [0, 0, 255]],], dtype=np.uint8)
  
fig = px.imshow(img_rgb)
fig.show()

fig.write_image("fig.png")

根据plotly文档,这应该可以解决问题,但我无法获得png图像。 它没有显示任何错误,没有警告......这就像 python 陷入了无限循环。我什至无法阻止终端运行。

我使用的是 python 3.9.6 64 位
我尝试过最新版本(5.3.1)和旧版本(4.14.3),但我遇到了同样的问题。

python -m pip install plotly

kaleido是最新版本(0.2.1),但我也尝试过版本(0.2.0)。

python -m pip install -U kaleido

我可能做错了什么?

更新:我在另一台计算机上尝试了相同的过程,并且工作正常。知道为什么第一台计算机无法运行代码吗?

python plotly plotly-python kaleido
7个回答
21
投票

我运行 Windows 10 企业版,这对我有用:

将 Kaleido 降级到版本 0.1.0post1(这是 0.1.* 中的最新版本):

pip install --upgrade "kaleido==0.1.*"

然后图像创建开始工作。另请参阅:

https://stackoverflow.com/a/71621135/660259

有趣的事情吗? kaleido v0.2.1 在 Windows Server 2019 上运行良好,但在我的工作计算机 Windows 10 Enterprise 上运行不佳


1
投票

我也有同样的问题。尝试了一切。没有任何作用!然后终于安装了orca。而且......它起作用了!如果没有效果,我建议在使用 Plotly 时安装 Orca 进行静态图像写入。

fig.write_image('fig1.png', engine='orca')

0
投票

正是 --single-process 为我解决了这个问题。

代码是:

import plotly.io as pio
                                                                         
pio.kaleido.scope.chromium_args += ("--single-process",) 

0
投票

我遇到了非常奇怪的导出错误,从根本没有图像(超时?),所有子图都是空的(没有痕迹),只有一些子图有痕迹,或者所有痕迹都存在,但它们没有与子图正确对齐。

值得尝试的事情:

  • 不要使用WebGL,即使用

    Scatter(…)
    代替
    Scattergl(…)
    等等。

    →这就是我最终的结果,对于小块地块,它无需进一步更改即可工作。

  • 按照the.real.gruycho的建议禁用Mathjax:

    import plotly.io as pio
    pio.kaleido.scope.mathjax = None
    
  • 按照Honey Thakuria的建议调整铬参数:

    import plotly.io as pio
    pio.kaleido.scope.chromium_args += ("--single-process",) 
    
  • 尝试使用 orca 而不是 kaleido (特别是如果您有大型/复杂的绘图和/或数据框,并且遇到 Chromium 的最大消息大小 (kMaximumMessageSize),请参阅 GitHub Issue):

    import plotly.io as pio
    
    # adjust installation path of orca
    pio.orca.config.executable = 'C:\\Users\\your_username\\AppData\\Local\\Programs\\orca\\orca.exe'
    pio.orca.config.timeout = 600  # increase timeout from 30 seconds to 10 minutes
    PLOT_WIDTH = 1600
    PLOT_HEIGHT = 1200
    
    # your code ...
    
    # make sure to specify width and height when using orca, I had issues without
    fig.write_image(filename, format='png', engine='orca', width=PLOT_WIDTH, height=PLOT_HEIGHT)
    

    注意:您可能需要先安装 orca,然后调整路径 - 另请参阅这个答案


-1
投票

如果您安装了

kaleido
,您应该在对象
engine
中将
kaleido
指定为
write_image

我可以使用解决方案重新创建以下产品:

import plotly.express as px
import numpy as np

    
# RGB Data as numpy array
img_rgb = np.array([[[255, 0, 0], [0, 255, 0], [0, 0, 255]],], dtype=np.uint8)
  
fig = px.imshow(img_rgb)
fig.show()

fig.write_image('fig.png', engine='kaleido')

结果图像:

图像保存的结果路径:


-1
投票

我也遇到了同样的问题。

按照此处的讨论https://github.com/plotly/Kaleido/issues/36我禁用了mathjax

import plotly.io as pio
pio.kaleido.scope.mathjax = None

瞧!情节开始出现。

显然这应该从plotly v.5开始修复,但事实并非如此。


-1
投票

我面临着与上述相同的问题。但奇怪的是,它可以在我的机器上运行,但不能在用户的机器上运行。

  • 我们都有 Windows Enterprise 10,相同版本相同更新,...(由软件中心分发)
  • 我们有相同的Python环境(相同的conda环境,由软件中心分发给所有数据科学家,用户无权访问此目录进行更新)
  • 我们在同一 conda 环境中从 Anaconda 提示符运行完全相同的测试代码
  • 我们不能因为这种类型的发行版而简单地降级kaleido的版本
  • 对于两者来说,它都可以与 ORCA 配合使用(所以是 kaleido 造成了问题)

到目前为止我能发现的唯一区别是我们的机器本身。我运行在 Intel 处理器上,他运行在 AMD 处理器上。

嗯,实际上还有第二个。我用英语运行 Windows,他用荷兰语运行。

上面那些在 1.2 上没有这个功能的人,可能建议检查你的处理器。在我的 Intel 上它可以工作,在他的 AMD 上则不行。

对于那些无法使用它的人:您在 Windows 上运行的是英文版吗?

© www.soinside.com 2019 - 2024. All rights reserved.