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

如何用Seaborn绘制DataFrame多列测量值频次对比柱状图

多列测量值频次分组柱状图实现

问题需求

基于含3列测量值的DataFrame绘制整合式柱状图:

  • X轴为固定测量值(0.50、0.75、1.00、1.50)
  • 每个X值对应3个柱状条,分别代表DataFrame的3列(不同测量设备)
  • Y轴为对应测量值的出现频次

解决方案

核心是将宽格式DataFrame转换为长格式,再用Seaborn绘制分组频次图。

完整代码示例

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 初始化数据
data2 = [[0.5, 0.5, 0.75], [1, 0.75, 0.75], [0.5, 0.75, 0.75], [0.75, 1, 0.75], [0.75, 1, 0.5] , [0.5, 1.5, 0.5]]
df2 = pd.DataFrame(data2, columns=['Aw1', 'Aw2', 'Bw1'])

# 转换为长格式数据:将列名转为"设备"字段,测量值转为"测量值"字段
df_melted = df2.melt(var_name='设备', value_name='测量值')

# 绘制分组频次柱状图
sns.catplot(x='测量值', hue='设备', data=df_melted, aspect=2, kind='count')
plt.title('各设备测量值频次分布')
plt.ylabel('出现频次')
plt.show()

关键步骤说明

  1. 数据格式转换:使用pd.melt()将原宽格式数据(每列对应一个设备)转为长格式,生成设备和测量值两个字段,这是Seaborn绘制分组图的标准数据结构。
  2. 绘制分组图:sns.catplot()中通过hue='设备'参数,让每个测量值对应的不同设备数据以不同颜色的柱状条展示,自动完成分组统计。
  3. 图表优化:添加标题、修改Y轴标签,提升图表可读性。

定制化样式(可选)

如果需要更灵活控制图表尺寸和柱状条样式,可使用countplot配合plt.subplots:

plt.figure(figsize=(10, 6))
sns.countplot(x='测量值', hue='设备', data=df_melted, width=0.7)
plt.title('各设备测量值频次分布')
plt.ylabel('出现频次')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:54:50