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

如何按Type列分组绘制q值统计的横向barplot柱状图

按Type分组绘制横向柱状图的实现方法

核心逻辑

你需要先按q和Type两个维度统计分组计数,再基于统计结果绘图,以下是两种可行实现方案:


方案1:基于pandas内置绘图工具(无需额外安装库)

直接用pd.crosstab统计分组频数后绘图,代码如下:

import pandas as pd
import matplotlib.pyplot as plt

# 构造原始DataFrame
studentData = { 
    0: {'stylevel': 'bachelor', 'q': 'agree', 'Type': 'Nascent'},
    1: {'stylevel': 'bachelor', 'q': 'very', 'Type': 'Nascent'},
    2: {'stylevel': 'master', 'q': 'very', 'Type': 'Active'},
    3: {'stylevel': 'master', 'q': 'agree', 'Type': 'Active'},
    4: {'stylevel': 'master', 'q': 'agree', 'Type': 'Student'},
}
dfObj = pd.DataFrame(studentData).T

# 统计每个q取值下不同Type的数量
group_count = pd.crosstab(index=dfObj['q'], columns=dfObj['Type'])
# 绘制分组横向柱状图
group_count.plot(kind='barh', figsize=(7, 3))

# 可选:补充图表标注
plt.xlabel('样本数量')
plt.ylabel('q字段取值')
plt.legend(title='Type分组')
plt.show()

运行后会自动生成每个q类别下对应Student、Active、Nascent三个分组的横向柱状图。


方案2:基于seaborn库绘制(样式更丰富)

如果需要更灵活的样式调整,可以使用seaborn的countplot接口,无需提前手动统计分组计数,seaborn会自动完成计算,代码如下:

import seaborn as sns
import matplotlib.pyplot as plt

# 此处沿用上面构造的dfObj
sns.countplot(
    data=dfObj,
    y='q',
    hue='Type'
)

plt.xlabel('样本数量')
plt.ylabel('q字段取值')
plt.legend(title='Type分组')
plt.show()

参数说明:

  • y='q':指定纵轴为q字段取值,生成横向柱状图
  • hue='Type':指定按Type字段的不同取值拆分柱子,生成分组效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:39:03