python 根据一定比例,使用matplotlib绘制如下堆叠柱状图,其中 y1 = [7,6,5,4,3,2,1] y2 = [1,2,3,3,1,1,0.5]
时间: 2024-05-05 08:13:37 浏览: 115
要使用matplotlib绘制堆叠柱状图,你可以按照以下步骤进行操作:
1. 导入所需的库:
```python
import matplotlib.pyplot as plt
import numpy as np
```
2. 创建数据:
```python
y1 = [7, 6, 5, 4, 3, 2, 1]
y2 = [1, 2, 3, 3, 1, 1, 0.5]
x = np.arange(len(y1)) # 创建x轴数据,长度与y1、y2相同
```
3. 绘制堆叠柱状图:
```python
plt.bar(x, y1, label='y1')
plt.bar(x, y2, bottom=y1, label='y2')
```
4. 添加图例、标签和标题:
```python
plt.xlabel('x')
plt.ylabel('y')
plt.title('Stacked Bar Chart')
plt.legend()
```
5. 显示图形:
```python
plt.show()
```
这样就可以绘制出堆叠柱状图了。
相关问题
matplotlib以时间为轴绘制堆叠柱状图
可以使用matplotlib中的bar函数绘制堆叠柱状图,并利用日期时间模块将时间数据转换为可视化的形式。
下面是一个简单的示例代码:
```python
import matplotlib.pyplot as plt
import datetime
# 创建数据
x = [datetime.date(2022, 1, 1),
datetime.date(2022, 2, 1),
datetime.date(2022, 3, 1),
datetime.date(2022, 4, 1)]
y1 = [10, 20, 30, 40]
y2 = [20, 30, 40, 50]
y3 = [5, 15, 25, 35]
# 转换日期时间格式
x = [x[i].strftime("%Y-%m-%d") for i in range(len(x))]
# 绘制堆叠柱状图
plt.bar(x, y1, label='y1')
plt.bar(x, y2, bottom=y1, label='y2')
plt.bar(x, y3, bottom=[y1[j] + y2[j] for j in range(len(y1))], label='y3')
plt.legend()
plt.show()
```
在本例中,我们使用datetime.date创建时间数据。在转换为可视化的形式时,我们使用strftime函数将日期格式化为“年-月-日”的形式。
然后,我们使用bar函数绘制堆叠柱状图。bottom参数使得不同的柱状图可以堆叠在一起,同时label参数用于添加图例。最后,我们使用legend函数显示图例并调用show方法显示图像。
x = np.arange(1,6) y1 = np.array([5,4,7,2,9]) y2 = np.array([3,5,2,4,10]) y3 = np.array([3,4,6,2,5])在绘制堆叠柱状图时如何从y1、y2、y3中取数
在Python中,你可以使用Matplotlib库中的`plt.bar()`函数创建堆叠柱状图。给定`x`作为共享的x轴数据,你需要将每个`y`数组作为单独的一组数据传递进去。对于`y1`, `y2`, 和 `y3`,你可以这样操作:
```python
import matplotlib.pyplot as plt
x = np.arange(1, 6)
y1 = np.array([5, 4, 7, 2, 9])
y2 = np.array([3, 5, 2, 4, 10])
y3 = np.array([3, 4, 6, 2, 5])
# 创建堆叠柱状图
plt.bar(x, y1, label='Series 1') # 第一组数据
plt.bar(x, y2, bottom=y1, label='Series 2') # 第二组数据,bottom参数用于设置前一层的高度
plt.bar(x, y3, bottom=np.add(y1, y2), label='Series 3') # 第三组数据,bottom参数等于前两层高度之和
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Stacked Bar Chart')
plt.legend()
plt.show()
```
这将会画出三个系列堆积在一起的柱状图。
阅读全文