Python用Plotly go模块绘饼图报错:Pie对象无效属性'x'
解决Plotly go.Pie的ValueError问题并转换柱状图为饼图
错误原因
你遇到的ValueError: Invalid property specified for object of type plotly.graph_objs.Pie: 'x'是因为Plotly的go.Pie对象不支持x参数:
- 柱状图
go.Bar用x/y定义分类轴和数值轴; - 饼图
go.Pie需要用labels(分类名称)和values(对应分类的数值)来配置数据。
修改后的完整代码
df2 = df.groupby(pd.to_datetime(df.MeterReading_DateTime).dt.hour).agg({'ACT_IMP_TOT': 'sum'}).reset_index() # 可选优化:将小时数转为更直观的标签格式(如"0:00"、"1:00") df2['MeterReading_DateTime'] = df2['MeterReading_DateTime'].apply(lambda h: f"{h}:00") print(df2) # 替换go.Bar为go.Pie,使用labels和values参数 data_plots = go.Pie( labels=df2['MeterReading_DateTime'], values=df2['ACT_IMP_TOT'], marker={'color': '#0f4054'} ) # 调整布局:移除饼图不需要的x/y轴配置,保留背景色和自定义标题 layout = { 'title': '各时段总用电量占比', 'plot_bgcolor': '#E8E8E8' } # 注意:fig.data需要是列表格式(Plotly规范要求) fig = {'data': [data_plots], 'layout': layout} plot_div = offline.plot(fig, output_type='div') return plot_div
关键改动说明
- 核心修复:用
go.Pie(labels=..., values=...)替代go.Bar(x=..., y=...),完全适配饼图的数据配置规则; - 布局优化:删除饼图不需要的
xaxis/yaxis配置,避免冗余; - 规范格式:将
data_plots放入列表中,符合Plotly对fig.data的数组格式要求(之前的柱状图代码也建议改成此格式,提升兼容性); - 可选优化:把小时数转换为
h:00格式,让饼图的分类标签更易读。
内容的提问来源于stack exchange,提问作者code
相关产品推荐
相关产品推荐

