如何在同一图中为各分类变量绘制数值计数图
实现方法(Python代码示例)
- 核心思路:核心步骤是将原始宽表转为长表,方便按列分组统计频次,统计完成后用分组柱状图展示即可。
依赖安装(未安装相关库可执行)
pip install pandas seaborn matplotlib
完整实现代码
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 构造目标数据集 df = pd.DataFrame({ 'Q1': [4,1,1,1,5], 'Q2': [1,5,2,4,1], 'Q3': [5,1,1,1,5] }) # 宽表转长表,适配分组统计逻辑 df_long = df.melt(var_name='所属列', value_name='取值') # 统计每列不同取值的出现次数 count_df = df_long.groupby(['所属列', '取值']).size().reset_index(name='出现次数') # 绘制分组柱状图 plt.figure(figsize=(10, 6)) sns.barplot(data=count_df, x='取值', y='出现次数', hue='所属列') # 配置图像标签 plt.xlabel('各列取值') plt.ylabel('对应列的出现次数') plt.title('各列不同取值的出现频次统计') plt.show()
效果说明
运行代码后生成的分组柱状图完全匹配需求:
- x轴展示1~5的所有分类取值
- 不同颜色的柱子分别对应Q1、Q2、Q3三列
- 柱子高度为对应取值在所属列的出现次数
内容的提问来源于stack exchange,提问作者SoraHeart
相关产品推荐
相关产品推荐

