python 并列柱状图
时间: 2024-12-28 20:27:13 浏览: 64
### 使用 Python 绘制并列柱状图
为了实现并列柱状图,可以利用 `matplotlib` 和 `seaborn` 库。这些库提供了灵活的方式来调整图表的各种参数,包括柱子之间的宽度和位置。
下面是一个具体的例子来展示如何创建两个不同类别的并列柱状图:
#### 示例代码:使用 Matplotlib 创建并列柱状图
```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)) # the label locations
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('{}'.format(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)
fig.tight_layout()
plt.show()
```
这段代码展示了如何通过指定不同的偏移量 (`x-width/2`, `x+width/2`) 来放置两组条形的位置,从而形成并列的效果[^2]。
对于更高级的数据可视化需求,还可以考虑使用 Seaborn 这样的高层次绘图接口来进行更加美观且易于理解的图形制作。Seaborn 建立在 Matplotlib 的基础上,并简化了许多常见的绘图操作。
#### 示例代码:使用 Seaborn 创建并列柱状图
```python
import seaborn as sns
import pandas as pd
sns.set_theme(style="whitegrid")
# 构建数据集
data = {
"Category": ["A", "B", "C"],
"Group A": [7, 8, 9],
"Group B": [10, 11, 12]
}
df = pd.DataFrame(data)
# 将DataFrame转换成长格式以便于绘图
df_melted = df.melt(id_vars=["Category"], var_name="Groups", value_name="Values")
# 绘制并列柱状图
g = sns.catplot(
data=df_melted, kind="bar",
x="Category", y="Values", hue="Groups",
errorbar=None,
palette="dark", alpha=.6, height=6
)
g.despine(left=True)
g.set_axis_labels("", "Value")
g.legend.set_title("")
plt.show()
```
此段代码中,先构建了一个简单的 DataFrame 并将其转化为适合绘制分类变量的形式;接着调用了 `catplot()` 函数指定了所需的参数以生成最终的并列柱状图。
阅读全文
相关推荐


















