无法使用Kaleido将Plotly图像导出为PNG

13

我以前没有使用过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位版本。 我尝试过最新版的Plotly(5.3.1)和旧版(4.14.3),但是我遇到了同样的问题。 python -m pip install plotly
Kaleido是最新版(0.2.1),但我也尝试过版本(0.2.0)。 python -m pip install -U kaleido
我可能做错了什么?
更新:我在另一台电脑上尝试了相同的过程,并且它可以正常工作。任何想法为什么第一台电脑无法运行代码?

1
我在jupyter lab中遇到了同样的问题。命令一直挂着,无法执行。如果我尝试使用fig.show(renderer='png')fig.show(renderer='svg')也会发生同样的情况。如果我中断内核,跟踪显示它卡在base.py的第192行:startup_response_string = self._proc.stdout.readline().decode('utf-8') - the.real.gruycho
6个回答

21

我使用的是 Windows 10 企业版,这对我有效:

将 Kaleido 降级至版本 0.1.0post1(该版本为 0.1.* 中最新版本):

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

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

https://dev59.com/71EG5IYBdhLWcg3wMGEK#71621135

有趣的是?kaleido v0.2.1 在 Windows Server 2019 上运行良好,但在我的工作电脑 Windows 10 Enterprise 上无法正常工作。


1
谢谢,这对我的Windows 10机器有效 :) - GarethD
1
这对我也起作用了!非常感谢。 我之前有一个版本0.2,在以前的机器上完美运行。但是自从迁移到我的新机器后,它停止工作,导致问题描述中所述的确切问题。将kaleido降级到0.1解决了这个问题。 - AmineBTG
2
对于conda用户:conda install -c conda-forge python-kaleido=0.1.0 - Daniel
这真是救了我的一天!我正在使用Windows 11,它可行! - Jansen Simanullang
在 Databricks 上对我有用。在那之前,我一直收到“使用“kaleido”引擎导出图像需要安装kaleido包”的错误提示,尽管已经安装了该包。 - Julien Massardier

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",) 

-1

如果您已安装了 kaleido,则应在对象 write_image 中将 engine 指定为 kaleido

使用该解决方案,我可以重新创建并生成以下内容:

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')

生成的图像: image

图像保存的路径: image_saved_to_path


@Karol Duarte,你解决了吗? - Roxy
1
不行。我之前也试过了,但是问题还是一样。 - Karol Duarte

-1

我遇到了与上述相同的问题。但更奇怪的是,它在我的电脑上可以运行,但在用户的电脑上却不能。

  • 我们都使用Windows Enterprise 10,版本和更新都相同...(由软件中心分发)
  • 我们拥有相同的Python环境(相同的conda env,由软件中心分发给所有数据科学家,用户无法访问此目录以进行更新)
  • 我们在相同的conda env中从Anaconda提示符中运行完全相同的测试代码
  • 由于这种类型的分发,我们无法简单地降级kaleido的版本
  • 对于两者而言,ORCA可以正常工作(因此是kaleido引起的问题)

到目前为止,我唯一能发现的区别就是我们的机器本身。我使用英特尔处理器,他使用AMD处理器。

好吧,实际上还有第二个区别。我使用英语版Windows,他使用荷兰语版。

那些在1.2版本下无法正常工作的人,可以检查一下自己的处理器。在我的英特尔处理器上可以工作,在他的AMD处理器上则不行。

而且,对于那些无法正常工作的人:你们是否在英语版Windows上运行?


1
这并没有真正回答问题。如果您有不同的问题,可以通过点击提问来提出。如果您想在此问题获得新的答案时得到通知,您可以关注此问题。一旦您拥有足够的声望,您还可以添加悬赏以吸引更多关注。- 来自审核 - Andrew Ryan
对不起,我试图帮助你,安德鲁·瑞恩。 - vindevoy

-2

我遇到了同样的问题。

根据这里的讨论 https://github.com/plotly/Kaleido/issues/36,我禁用了mathjax。

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

然后,瞧!图表开始出现了。

显然,这应该在plotly v. 5之后得到修复,但事实并非如此。


1
这个对我也起作用了! - Swap
@交换很酷,那么也许可以点赞。 - the.real.gruycho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接