我以前从未使用过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
我可能做错了什么?
更新:我在另一台计算机上尝试了相同的过程,并且工作正常。知道为什么第一台计算机无法运行代码吗?
我运行 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 上运行不佳
我也有同样的问题。尝试了一切。没有任何作用!然后终于安装了orca。而且......它起作用了!如果没有效果,我建议在使用 Plotly 时安装 Orca 进行静态图像写入。
fig.write_image('fig1.png', engine='orca')
正是 --single-process 为我解决了这个问题。
代码是:
import plotly.io as pio
pio.kaleido.scope.chromium_args += ("--single-process",)
我遇到了非常奇怪的导出错误,从根本没有图像(超时?),所有子图都是空的(没有痕迹),只有一些子图有痕迹,或者所有痕迹都存在,但它们没有与子图正确对齐。
值得尝试的事情:
不要使用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,然后调整路径 - 另请参阅这个答案。
如果您安装了
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')
我也遇到了同样的问题。
按照此处的讨论https://github.com/plotly/Kaleido/issues/36我禁用了mathjax
import plotly.io as pio
pio.kaleido.scope.mathjax = None
瞧!情节开始出现。
显然这应该从plotly v.5开始修复,但事实并非如此。
我面临着与上述相同的问题。但奇怪的是,它可以在我的机器上运行,但不能在用户的机器上运行。
到目前为止我能发现的唯一区别是我们的机器本身。我运行在 Intel 处理器上,他运行在 AMD 处理器上。
嗯,实际上还有第二个。我用英语运行 Windows,他用荷兰语运行。
上面那些在 1.2 上没有这个功能的人,可能建议检查你的处理器。在我的 Intel 上它可以工作,在他的 AMD 上则不行。
对于那些无法使用它的人:您在 Windows 上运行的是英文版吗?