You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用字典变量标签绘制带含义标注的条形图/直方图?

解决方法

下面提供两种实用方案,按需选择:

方案1:先替换DataFrame中的分类值,再绘图

直接将原分类列映射为对应的含义文本,后续绘图时X轴会自动显示替换后的值,无需额外调整刻度。

代码示例

import pandas as pd
import matplotlib.pyplot as plt

# 示例DataFrame
df = pd.DataFrame({'food': ['a', 'b', 'a', 'c', 'd', 'b', 'a', 'c']})
# 定义分类映射字典
food_mapping = {'a': 'apple', 'b': 'banana', 'c': 'couscous', 'd': 'dragon'}

# 替换列值(可选择创建新列或覆盖原列)
df['food'] = df['food'].replace(food_mapping)  # 覆盖原列;若不想修改原数据,用df['food_full'] = ...

# 绘制条形图
df['food'].value_counts().plot(kind='bar')
plt.xlabel('食物类型')
plt.ylabel('数量')
plt.title('食物分布统计')
plt.show()

注:使用replace()而非map()的好处是,若DataFrame中存在映射字典未覆盖的分类值,会保留原数值而非转为NaN。

方案2:不修改原数据,绘图时自定义X轴刻度标签

如果不想改动原始数据集,可先统计分类的计数,再手动替换X轴的刻度文本。

代码示例(Matplotlib)

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'food': ['a', 'b', 'a', 'c', 'd', 'b', 'a', 'c']})
food_mapping = {'a': 'apple', 'b': 'banana', 'c': 'couscous', 'd': 'dragon'}

# 统计各分类的出现次数
count_data = df['food'].value_counts()

# 绘制条形图
plt.bar(count_data.index, count_data.values)
# 替换X轴刻度标签
plt.xticks(
    ticks=range(len(count_data.index)),
    labels=[food_mapping[code] for code in count_data.index]
)
plt.xlabel('食物类型')
plt.ylabel('数量')
plt.title('食物分布统计')
plt.show()

代码示例(Seaborn)

import seaborn as sns
import matplotlib.pyplot as plt

df = pd.DataFrame({'food': ['a', 'b', 'a', 'c', 'd', 'b', 'a', 'c']})
food_mapping = {'a': 'apple', 'b': 'banana', 'c': 'couscous', 'd': 'dragon'}

# 绘制计数条形图
sns.countplot(data=df, x='food')
# 替换刻度标签
plt.xticks(
    ticks=range(len(food_mapping)),
    labels=list(food_mapping.values())
)
plt.xlabel('食物类型')
plt.ylabel('数量')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:07:07