matplotlib 绘制柱状图表示一组数据,数据分三类,每类有两种,三类数据并列表示,两种数据堆积表示
时间: 2023-12-08 13:03:14 浏览: 216
可以使用Matplotlib中的`bar`函数来绘制柱状图,具体步骤如下:
1. 准备数据,将三类数据分别存储到三个列表中,每个列表包含两个数据。
```python
import numpy as np
data1 = [10, 20]
data2 = [15, 25]
data3 = [18, 22]
# 将三组数据合并成一个列表
data = [data1, data2, data3]
```
2. 创建画布和子图对象。
```python
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
```
3. 绘制柱状图,将每组数据的两个元素作为x轴坐标和高度。
```python
# 设置柱状图的宽度为0.2
bar_width = 0.2
# 计算每组数据的x轴坐标
x1 = np.arange(len(data1))
x2 = x1 + bar_width
x3 = x1 + 2 * bar_width
# 绘制柱状图
ax.bar(x1, data1, bar_width, label='Data 1')
ax.bar(x2, data2, bar_width, label='Data 2')
ax.bar(x3, data3, bar_width, label='Data 3')
```
4. 添加图例、坐标轴标签和标题。
```python
# 添加图例
ax.legend()
# 设置x轴刻度标签
ax.set_xticks(x2)
ax.set_xticklabels(['Type 1', 'Type 2'])
# 添加坐标轴标签和标题
ax.set_xlabel('Data Type')
ax.set_ylabel('Value')
ax.set_title('Stacked Bar Chart')
```
5. 显示图形。
```python
plt.show()
```
完整代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
data1 = [10, 20]
data2 = [15, 25]
data3 = [18, 22]
data = [data1, data2, data3]
fig, ax = plt.subplots()
bar_width = 0.2
x1 = np.arange(len(data1))
x2 = x1 + bar_width
x3 = x1 + 2 * bar_width
ax.bar(x1, data1, bar_width, label='Data 1')
ax.bar(x2, data2, bar_width, label='Data 2')
ax.bar(x3, data3, bar_width, label='Data 3')
ax.legend()
ax.set_xticks(x2)
ax.set_xticklabels(['Type 1', 'Type 2'])
ax.set_xlabel('Data Type')
ax.set_ylabel('Value')
ax.set_title('Stacked Bar Chart')
plt.show()
```
输出结果如下:
![stacked_bar_chart.png](attachment:stacked_bar_chart.png)
阅读全文