You need to enable JavaScript to run this app. 如何使用字典数据绘制指定x轴排序的plot.bar双数据集柱状图
优惠活动
大模型
产品
解决方案
定价
更多

如何使用字典数据绘制指定x轴排序的plot.bar双数据集柱状图

解决方案

你原有代码的核心问题有两个:

  1. 直接传入字典构造DataFrame时,默认会把字典的键作为列名,两行索引对应每个值的两个元素,和你需要的「字典键作为x轴分类、两个值作为两组柱子」的结构完全不匹配
  2. 没有按每个键对应的第一个数值做升序排序,而且原数值是字符串格式,直接排序会按字符串规则出错(比如字符串'10'会排在'2'前面)

可直接运行的修改后代码

import pandas as pd
import matplotlib.pyplot as plt

# 给定数据集
x = {'A': ['12', '100'],
     'B': ['2', '101'],
     'C': ['3', '102'],
     'D': ['4', '103'],
     'E': ['5', '104'],
     'F': ['7', '105'],
     'I': ['6', '106'],
     'J': ['8', '107'],
     'K': ['9', '108'],
     'L': ['10', '109'],
     'M': ['11', '110'],
     'N': ['1', '111']}

# 转换字典结构:每一行对应一个分类,同时把字符串数值转为整数
df = pd.DataFrame(
    [[key, int(val[0]), int(val[1])] for key, val in x.items()],
    columns=['分类', '第一组数值', '第二组数值']
)

# 按第一组数值升序排序,得到要求的x轴顺序
df = df.sort_values('第一组数值').reset_index(drop=True)

# 设置分类列为索引,绘图时会自动作为x轴刻度
df = df.set_index('分类')

# 绘制双组柱状图
df.plot.bar(rot=15, title="双组数据柱状图")
plt.show()

代码说明

  • 构造DataFrame时先把原字典的键值对展开为行结构,同时将字符串格式的数值转为整数,保证排序逻辑正确
  • 按第一组数值排序后刚好符合你要求的N→B→C→D→E→I→F→J→K→L→M→A的x轴顺序
  • 索引设置为分类列后,pandas绘图会自动把索引作为x轴,两列数值分别生成两组柱子,符合你的需求

内容的提问来源于stack exchange,提问作者Mary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 17:33:04