Plotly设置Kaleido默认宽高报AttributeError问题咨询
Plotly设置默认宽高报空属性错误的解决方法
报错原因
Plotly 5.11及以上版本调整了静态导出模块的初始化逻辑,导入plotly.io时不会自动初始化pio.kaleido.scope对象,未提前触发kaleido加载流程时该属性值为None,直接修改它的子属性就会抛出'NoneType' object has no attribute 'default_width'错误。
解决方法
全局通用配置(推荐,同时覆盖交互展示、静态导出全场景)
直接修改默认模板的布局配置,不需要依赖kaleido的初始化状态,配置后所有新生成的图表都会默认使用这个宽高设置:import plotly.io as pio # 设为None代表自适应容器宽高,需要固定尺寸直接传入对应像素数值即可 pio.templates.default.layout.width = None pio.templates.default.layout.height = None仅针对kaleido静态导出设置默认宽高
先手动初始化kaleido作用域,再修改对应配置就不会触发空对象报错:import plotly.io as pio # 手动加载kaleido引擎 pio._kaleido_scope = pio.KaleidoScope() # 配置静态导出的默认宽高 pio.kaleido.scope.default_width = None pio.kaleido.scope.default_height = None
如果执行上述代码仍报错,先检查本地kaleido依赖状态,执行pip install -U kaleido升级到兼容版本即可,存在版本冲突时可安装适配性更稳定的0.2.1版本,执行命令pip install kaleido==0.2.1。
内容的提问来源于stack exchange,提问作者Strahinja Trenkic
相关产品推荐
相关产品推荐

