Plotly 5.6.0绘制Sunburst旭日图输出空白问题咨询
问题根因
Plotly 5.6.0版本的px.sunburst在构造层级路径数据时,内部调用了pandas的DataFrame.append方法。当环境中pandas版本≥1.4.0时,该弃用方法的兼容问题会导致层级表拼接失败,最终生成空的绘图数据集,直接表现为输出图表空白,运行时弹出的如下警告就是该问题的直接提示,和Value列是否过滤大于0的记录无关:
The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
无需升级Plotly的解决方案
- 方案1:降级pandas到兼容版本
将pandas降级到1.3.5版本(最后一个无append兼容问题的稳定版),执行命令:pip install pandas==1.3.5
降级完成后原有绘图代码不需要做任何修改,直接运行即可正常渲染旭日图。 - 方案2:添加兼容猴子补丁
若无法调整pandas版本,可在导入plotly前给pandas追加兼容append方法,用官方推荐的pandas.concat实现原有append的逻辑,补丁代码放在脚本最开头即可:
该补丁完全匹配原import pandas as pd # 兼容Plotly 5.6.0内部的append调用 if not hasattr(pd.DataFrame, "append"): def _df_append(self, other, ignore_index=False, verify_integrity=False, sort=False): return pd.concat( [self, other], ignore_index=ignore_index, verify_integrity=verify_integrity, sort=sort ) pd.DataFrame.append = _df_append # 原有代码无需修改 import plotly.express as px fig = px.sunburst( data_frame=data_ACT, values='Value', path=['Mode','Type'] ) fig.show()DataFrame.append的参数行为,不会影响其他业务代码逻辑。 - 方案3:绕开px的自动路径解析
手动整理旭日图需要的父子节点、数值对应关系,直接调用plotly.graph_objects.Sunburst绘图,完全避开px内部调用append的逻辑。
额外排查点
如果上述操作完成后仍出现空白图,检查path参数传入的分类列是否存在空值(NaN/None),空值会导致层级解析失败,绘图前可将对应列的空值统一填充为指定字符串(如'未分类')即可。
内容的提问来源于stack exchange,提问作者Juliane Lüder
相关产品推荐
相关产品推荐

