### 使用 Matplotlib 绘制柱状图
以下是基于所提供的引用内容以及专业知识构建的一个完整的示例代码,展示如何通过 `matplotlib` 庌绘柱状图。
#### 基础柱状图绘制
以下是一个基础的柱状图绘制方法,其中包含了 X 轴标签、Y 轴标签和图表标题:
```python
import matplotlib.pyplot as plt
class A:
def draw_bar_chart(self, x_data, y_data, xlabel="X-axis", ylabel="Y-axis", title="Bar Chart"):
"""
绘制柱状图并设置基本属性。
参数:
x_data (list): X轴的数据列表。
y_data (list): Y轴的数据列表。
xlabel (str): X轴标签名称。
ylabel (str): Y轴标签名称。
title (str): 图表标题。
"""
plt.figure(figsize=(8, 6)) # 设置画布大小
plt.bar(x_data, y_data, color='skyblue') # 创建柱状图
# 添加必要的标注
plt.xlabel(xlabel)
plt.ylabel(ylabel)
plt.title(title)
# 显示网格线以便更清晰观察数据关系
plt.grid(axis='y', linestyle='--', alpha=0.7)
# 展示图形
plt.show()
# 实例化类A并调用draw_bar_chart方法
a_instance = A()
x_values = ['Group A', 'Group B', 'Group C']
y_values = [10, 20, 15]
a_instance.draw_bar_chart(x_values, y_values)
```
上述代码展示了如何在一个自定义类中实现柱状图的绘制功能,并允许灵活调整 X 轴标签、Y 轴标签和图表标题等内容[^1]。
---
#### 高级柱状图样式:堆叠与左右分布
如果希望进一步扩展柱状图的功能,比如实现堆叠柱状图或者左右分布柱状图,则可以通过修改参数来完成。下面分别给出两种高级样式的实现方式。
##### 堆叠柱状图
堆叠柱状图适用于多组数据在同一类别下的叠加表示:
```python
def draw_stacked_bar_chart(categories, data_series_1, data_series_2):
"""
绘制堆叠柱状图
参数:
categories (list): 类别名列表。
data_series_1 (list): 数据序列一。
data_series_2 (list): 数据序列二。
"""
fig, ax = plt.subplots(figsize=(8, 6))
bar_width = 0.5
index = range(len(categories))
bars1 = ax.bar(index, data_series_1, bar_width, label='Series 1')
bars2 = ax.bar(index, data_series_2, bar_width, bottom=data_series_1, label='Series 2')
ax.set_xlabel('Categories')
ax.set_ylabel('Values')
ax.set_title('Stacked Bar Chart Example')
ax.set_xticks(index)
ax.set_xticklabels(categories)
ax.legend()
plt.tight_layout()
plt.show()
categories = ['Category A', 'Category B', 'Category C']
data_s1 = [10, 15, 30]
data_s2 = [5, 10, 20]
draw_stacked_bar_chart(categories, data_s1, data_s2)
```
此部分实现了两组数据在相同分类上的堆叠效果[^2]。
##### 左右分布柱状图
对于对比性质较强的数据集,可以采用左右分布的形式呈现差异性:
```python
def draw_grouped_bar_chart(categories, group_a, group_b):
"""
绘制分组(左右分布)柱状图
参数:
categories (list): 类别名列表。
group_a (list): 第一组数据。
group_b (list): 第二组数据。
"""
n_groups = len(categories)
fig, ax = plt.subplots(figsize=(8, 6))
index = range(n_groups)
bar_width = 0.35
rects1 = ax.bar([i - bar_width/2 for i in index], group_a, bar_width,
label='Group A', color='lightcoral')
rects2 = ax.bar([i + bar_width/2 for i in index], group_b, bar_width,
label='Group B', color='dodgerblue')
ax.set_xlabel('Categories')
ax.set_ylabel('Scores')
ax.set_title('Grouped Bar Chart Example')
ax.set_xticks(index)
ax.set_xticklabels(categories)
ax.legend()
plt.tight_layout()
plt.show()
group_a_scores = [12, 9, 14]
group_b_scores = [10, 11, 13]
draw_grouped_bar_chart(['Cat A', 'Cat B', 'Cat C'], group_a_scores, group_b_scores)
```
这段代码利用偏移量使两个数据系列分开显示于同一坐标系下。
---
### 总结
以上提供了三种不同的柱状图绘制方案,涵盖了基础柱状图、堆叠柱状图以及分组柱状图的应用场景。每种类型的实现均依赖于对 `plt.bar()` 函数及其附加参数的有效配置。