python画多组并列柱状图
时间: 2025-02-02 10:08:23 浏览: 67
### 使用 Python 绘制多组并列柱状图
为了实现多组并列柱状图,可以利用 `matplotlib` 或者更高级别的接口如 `seaborn` 来简化绘图过程。以下是两种方式的具体实例。
#### 方法一:使用 Matplotlib 实现多组并列柱状图
通过调整每组条形的位置偏移量来达到并置的效果[^2]:
```python
import numpy as np
import matplotlib.pyplot as plt
# 创建虚拟数据集
labels = ['G1', 'G2', 'G3', 'G4']
men_means = [20, 35, 30, 35]
women_means = [25, 32, 34, 20]
x = np.arange(len(labels)) # 标签位置
width = 0.35 # 宽度设置
fig, ax = plt.subplots()
rects1 = ax.bar(x - width/2, men_means, width, label='Men')
rects2 = ax.bar(x + width/2, women_means, width, label='Women')
# 添加一些文本描述
ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(x)
ax.set_xticklabels(labels)
ax.legend()
def autolabel(rects):
"""Attach a text label above each bar in *rects*, displaying its height."""
for rect in rects:
height = rect.get_height()
ax.annotate(f'{height}',
xy=(rect.get_x() + rect.get_width() / 2, height),
xytext=(0, 3), # 3 points vertical offset
textcoords="offset points",
ha='center', va='bottom')
autolabel(rects1)
autolabel(rects2)
plt.show()
```
#### 方法二:使用 Seaborn 进行分组柱状图绘制
Seaborn 提供了一个更为简洁的方式来进行此类图表的创建,特别是当处理分类变量时更加直观[^1]:
```python
import pandas as pd
import seaborn as sns
sns.set_theme(style="whitegrid")
# 构建样本 DataFrame
data = {
"Category": ["A", "B", "C"],
"Group X": [10, 20, 30],
"Group Y": [15, 25, 35],
}
df = pd.DataFrame(data).melt(id_vars=["Category"], var_name="Groups", value_name="Values")
# 绘制图形
g = sns.catplot(
data=df,
kind="bar",
x="Category",
y="Values",
hue="Groups",
errorbar=None, # 不显示误差线
palette="dark",
alpha=0.6,
height=6
)
g.despine(left=True)
g.set_axis_labels("", "Value")
g.legend.set_title("")
plt.show()
```
这两种方法都可以有效地展示不同类别下的多个数值对比情况,并且可以根据实际需求进一步定制样式和布局。
阅读全文
相关推荐


















