Plotly Express绘制出生数分组柱状图报ValueError如何解决
问题原因
你构造的pivot_dayofweek为宽格式DataFrame,pivot_dayofweek.values是形状为(7,3)的二维数组,而Plotly Express的px.bar的y参数如果直接传入数组,默认期望接收一维数组,传入二维数组后Plotly无法匹配x轴7个坐标对应的y值映射规则,因此抛出元素数量不匹配的错误。
解决方法
提供两种可行方案,均可实现目标分组柱状图效果:
方案1:直接基于现有宽表绘图
无需修改已生成的透视表,仅调整绘图代码的y参数,传入列名列表即可:
px.bar(pivot_dayofweek, x=pivot_dayofweek.index, y=pivot_dayofweek.columns, barmode='group', labels={'value':'平均出生人数', 'variable':'年代', 'x':'星期'})
Plotly会自动将每个年代列作为独立分组,用不同颜色区分渲染。
方案2:转换为长表后绘图(更符合Plotly Express的设计习惯)
先将宽格式透视表转换为长格式,再指定分组字段绘图:
# 重置索引并转换为长表 pivot_long = pivot_dayofweek.reset_index().melt( id_vars='dayofweek', var_name='decade', value_name='avg_births' ) # 绘制分组柱状图 px.bar(pivot_long, x='dayofweek', y='avg_births', color='decade', barmode='group')
内容的提问来源于stack exchange,提问作者Muhammad hassaan haider
相关产品推荐
相关产品推荐

