python 分类柱状图
时间: 2025-06-04 16:55:55 浏览: 23
### 使用 Python 绘制分类柱状图
在数据可视化领域,`matplotlib` 和 `seaborn` 是两个非常流行的库。它们能够轻松创建各种类型的图表,包括分类柱状图。
以下是使用 `matplotlib` 和 `seaborn` 创建分类柱状图的示例代码:
#### 方法一:使用 Matplotlib
通过 `pandas.DataFrame.groupby()` 对数据按类别分组并求和后,可以直接利用 `DataFrame.plot(kind='bar')` 来绘制分类柱状图[^1]。
```python
import pandas as pd
import matplotlib.pyplot as plt
# 构造示例数据
data = {
'Category': ['A', 'B', 'C', 'D'],
'Value1': [10, 24, 35, 40],
'Value2': [15, 28, 37, 45]
}
df = pd.DataFrame(data)
# 将 DataFrame 转置以便于绘图
df_melted = df.melt(id_vars="Category", var_name="Variable", value_name="Value")
# 设置图形尺寸
plt.figure(figsize=(8, 6))
# 按照 Category 进行分组并绘制条形图
pivot_df = df_melted.pivot(index='Category', columns='Variable', values='Value')
pivot_df.plot(kind='bar', stacked=False) # 可选参数stacked=True表示堆叠柱状图
# 添加标题和标签
plt.title('分类柱状图 (Matplotlib)', fontsize=16)
plt.xlabel('类别', fontsize=14)
plt.ylabel('数值', fontsize=14)
plt.xticks(rotation=0)
# 展示图像
plt.tight_layout()
plt.legend(title="变量")
plt.show()
```
---
#### 方法二:使用 Seaborn
Seaborn 提供了更高级别的接口来简化复杂图表的制作过程。下面是一个基于 `sns.barplot()` 的例子[^2]。
```python
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# 构造示例数据
data = {
'Category': ['A', 'B', 'C', 'D'] * 2,
'Type': ['X', 'Y'] * 4,
'Values': [10, 15, 24, 28, 35, 37, 40, 45]
}
df = pd.DataFrame(data)
# 设置样式
sns.set(style="whitegrid") # 白色网格背景
sns.set_context("notebook", font_scale=1.2) # 字体大小调节[^3]
# 绘制分类柱状图
plt.figure(figsize=(8, 6))
ax = sns.barplot(x='Category', y='Values', hue='Type', data=df, palette='Set2')
# 自定义标题与轴标签
plt.title('分类柱状图 (Seaborn)', fontsize=18)
plt.xlabel('类别', fontsize=14)
plt.ylabel('数值', fontsize=14)
# 增加刻度旋转角度
plt.xticks(rotation=0)
# 显示图例
plt.legend(loc='upper right', title='类型')
# 展示图像
plt.tight_layout()
plt.show()
```
以上两种方式都可以用来绘制分类柱状图。如果希望进一步自定义颜色、字体或其他属性,则可以根据需求调整相应参数。
---
### 注意事项
- 如果需要堆叠效果,在 `matplotlib` 中可设置 `stacked=True` 参数;而在 `seaborn` 中则需手动计算累计高度。
- 当涉及多个子类时,推荐使用 `hue` 参数区分不同子类的数据分布情况。
阅读全文
相关推荐



















