python绘制普通堆叠柱状图
时间: 2024-06-27 10:01:16 浏览: 169
在Python中,你可以使用matplotlib库来绘制普通堆叠柱状图,这是一种常见的用于比较不同类别数据之间占比的图表。以下是一个简单的例子:
```python
import matplotlib.pyplot as plt
# 假设我们有如下数据
categories = ['A', 'B', 'C', 'D']
values1 = [20, 35, 25, 10]
values2 = [15, 40, 30, 5]
# 创建一个新的图形
plt.figure()
# 创建堆叠柱状图
plt.bar(categories, values1, label='Group 1')
plt.bar(categories, values2, bottom=values1, label='Group 2')
# 添加标题和标签
plt.title('Stacked Bar Chart Example')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.legend()
# 显示图形
plt.show()
```
在这个例子中:
- `categories` 列表包含了x轴的类别标签。
- `values1` 和 `values2` 分别是两个组别的数据,`bottom=values1` 参数用于指定每个新柱子的底部位置,以便于堆叠。
如果你运行这段代码,你会看到一个堆叠柱状图,其中Group 1的数据会先显示,然后Group 2的数据会覆盖在上面。
相关问题
python绘制堆叠柱状图_Python绘制堆叠柱状图的实例
好的,我来讲一下如何用 Python 绘制堆叠柱状图。
首先,我们需要导入必要的库,包括 matplotlib 和 numpy。
```python
import matplotlib.pyplot as plt
import numpy as np
```
然后,我们需要准备数据。假设我们有三个类别的数据,每个类别有四个子类别。我们可以用一个二维数组来表示这些数据。
```python
data = np.array([[15, 20, 25, 30], [10, 15, 20, 25], [5, 10, 15, 20]])
```
现在,我们可以使用 matplotlib 的 `bar` 函数来绘制堆叠柱状图。我们需要多次调用 `bar` 函数,每次传入一个参数 `bottom` 来指定当前柱状图的底部位置。每个类别的第一个子类别的底部位置都是 0,后面的子类别的底部位置则是前一个子类别的顶部位置。
```python
bottom = np.zeros(len(data[0]))
colors = ['r', 'g', 'b']
for i in range(len(data)):
plt.bar(range(len(data[i])), data[i], bottom=bottom, color=colors[i])
bottom += data[i]
```
最后,我们可以添加一些标签和标题来美化图表。
```python
plt.xticks(range(len(data[0])), ['A', 'B', 'C', 'D'])
plt.ylabel('Value')
plt.title('Stacked Bar Chart')
plt.show()
```
完整的代码如下:
```python
import matplotlib.pyplot as plt
import numpy as np
data = np.array([[15, 20, 25, 30], [10, 15, 20, 25], [5, 10, 15, 20]])
bottom = np.zeros(len(data[0]))
colors = ['r', 'g', 'b']
for i in range(len(data)):
plt.bar(range(len(data[i])), data[i], bottom=bottom, color=colors[i])
bottom += data[i]
plt.xticks(range(len(data[0])), ['A', 'B', 'C', 'D'])
plt.ylabel('Value')
plt.title('Stacked Bar Chart')
plt.show()
```
运行代码,就可以得到如下的堆叠柱状图:
![stacked_bar_chart.png](https://cdn.jsdelivr.net/gh/wizardforcel/data-science-ipython/images/matplotlib/stacked_bar_chart.png)
Python plt 绘制横向堆叠柱状图
可以使用Matplotlib库中的`barh`函数来绘制横向堆叠柱状图。以下是一个简单的示例代码:
```python
import matplotlib.pyplot as plt
import numpy as np
# 数据
labels = ['A', 'B', 'C', 'D']
values1 = [20, 35, 30, 25]
values2 = [10, 25, 20, 30]
values3 = [5, 15, 10, 20]
# 每个柱子的位置
pos = np.arange(len(labels))
# 绘制柱状图
plt.barh(pos, values1, color='blue', edgecolor='black')
plt.barh(pos, values2, color='green', edgecolor='black', left=values1)
plt.barh(pos, values3, color='orange', edgecolor='black', left=values1+values2)
# 设置标签和标题
plt.yticks(pos, labels)
plt.xlabel('Value')
plt.title('Horizontal Stacked Bar Chart')
# 显示图形
plt.show()
```
运行以上代码,可以得到一个横向堆叠柱状图。你可以根据自己的数据和需求进行修改和调整。
阅读全文