Plotly柱状图无法升序排列及'Figure'无sort_values属性错误求助
解决Plotly柱状图升序排序及AttributeError问题
错误原因
你碰到的AttributeError: 'Figure' object has no attribute 'sort_values',是因为sort_values()是pandas DataFrame专属方法,不能直接用在Plotly生成的Figure对象上。要实现柱状图升序排列,得先对数据源df_table做排序,再用排序后的数据集绘图。
解决方案
1. 先对DataFrame做升序排序
在调用px.bar()绘图之前,用df_table.sort_values()对"June 2023"列做升序排序,这样生成的柱状图就会按数值从小到大排列。
2. (可选)固定类别与颜色的对应关系
你给每个柱子设置了自定义颜色列表,如果直接排序,颜色会跟着柱子位置变动,可能导致原类别对应错误颜色。建议先做一个类别-颜色映射字典,确保每个"Issue Sub-Type"始终对应固定颜色。
修改后的完整代码
# 1. 创建类别-颜色映射字典(需要根据你的实际Issue Sub-Type列表对应颜色,示例如下) # 先打印查看所有类别:print(df_table["Issue Sub-Type"].unique()) color_map = { "你的子类型1": "#12e195", "你的子类型2": "#01cdfe", "你的子类型3": "#05ffa1", "你的子类型4": "#b967ff", "你的子类型5": "#fffb96", "你的子类型6": "#001eff", "你的子类型7": "#e377c2", "你的子类型8": "#d05037", "你的子类型9": "#bcbd22", "你的子类型10": "#17becf", "你的子类型11": "#00FFFF", "你的子类型12": "#BFFF00" } # 2. 对DataFrame按June 2023列升序排序 sorted_df = df_table.sort_values(by="June 2023", ascending=True) # 3. 绘制柱状图,使用颜色映射确保类别颜色对应正确 figBARChartJune = px.bar( sorted_df, x="Issue Sub-Type", y="June 2023", text_auto=True, color="Issue Sub-Type", color_discrete_map=color_map ) # 原布局和样式设置保持不变 figBARChartJune.update_layout( xaxis_title="Issue Sub-Types", yaxis_title="Number of Issues", legend_title="Issue Sub-Types", font=dict( family="Times New Roman, monospace", size=12, color="RebeccaPurple" ), title={ 'text': "Total Number of Issues for June 2023", } )
关键说明
- 如果不需要固定类别颜色,也可以简化操作:直接排序后绘图,保留原来的
update_traces(marker_color=...),但注意排序后颜色顺序会随柱子位置变化,可能和原类别不匹配,更推荐用颜色映射字典的方式。 - 排序参数
ascending=True为升序,若需要降序改为False即可。
内容的提问来源于stack exchange,提问作者DMANNENL
相关产品推荐
相关产品推荐

