Python plt 绘制横向堆叠柱状图
时间: 2023-07-05 18:31:03 浏览: 104
可以使用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()
```
运行以上代码,可以得到一个横向堆叠柱状图。你可以根据自己的数据和需求进行修改和调整。
相关问题
横向堆叠柱状图python
### 回答1:
好的,横向堆叠柱状图可以使用Python中的Matplotlib库来实现。以下是一个简单的示例代码:
```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()
```
运行以上代码,可以得到一个横向堆叠柱状图。你可以根据自己的数据和需求进行修改和调整。
### 回答2:
横向堆叠柱状图在Python中可以使用matplotlib库来绘制。首先需要导入所需的库,包括matplotlib.pyplot和numpy:
```python
import matplotlib.pyplot as plt
import numpy as np
```
接下来,我们定义一些示例数据来绘制横向堆叠柱状图。假设我们有三个类别的数据,每个类别有五个子类别,这样我们就有三个柱状图,其中每个柱状图有五个柱子。
```python
# 定义类别和子类别的名称
categories = ['A', 'B', 'C']
subcategories = ['X', 'Y', 'Z', 'W', 'V']
# 生成示例数据
data = np.random.rand(len(categories), len(subcategories))
```
接下来,我们使用plt.barh函数绘制横向堆叠柱状图。使用for循环来遍历每个类别,并在每个类别上绘制子类别的柱状图。
```python
# 获取每个类别的索引
indices = np.arange(len(categories))
# 初始化堆叠的起始位置
bottom = np.zeros(len(categories))
# 遍历每个子类别,绘制堆叠的柱状图
for i, subcategory in enumerate(subcategories):
plt.barh(indices, data[:,i], left=bottom)
bottom += data[:,i] # 更新堆叠的起始位置
```
最后,我们进行一些绘图的设置和标注,包括添加标题、轴标签和图例等。
```python
# 设置轴标签和标题
plt.xlabel('Value')
plt.ylabel('Category')
plt.title('Stacked Horizontal Bar Chart')
# 设置类别的刻度和标签
plt.yticks(indices, categories)
# 添加图例
plt.legend(subcategories)
# 显示图形
plt.show()
```
上述的代码将生成一个横向堆叠柱状图,其中每个柱状图代表一个类别的子类别。每个柱状图的高度和颜色根据数据而定。
### 回答3:
横向堆叠柱状图是一种可视化数据的方式,通常用于展示多个类别的数据在一个整体中的占比或比较。
在Python中,可以使用一些数据可视化库来实现横向堆叠柱状图的绘制,比如Matplotlib和Seaborn。下面是使用Matplotlib库绘制横向堆叠柱状图的代码示例:
```python
import matplotlib.pyplot as plt
# 数据
categories = ['A', 'B', 'C', 'D'] # 类别
data1 = [10, 20, 30, 40] # 数据1
data2 = [15, 25, 35, 45] # 数据2
data3 = [5, 15, 25, 35] # 数据3
# 绘图
plt.barh(categories, data1, label='Data 1')
plt.barh(categories, data2, left=data1, label='Data 2')
plt.barh(categories, data3, left=[d1 + d2 for d1, d2 in zip(data1, data2)], label='Data 3')
# 设置图例和标题
plt.legend()
plt.title('Horizontal Stacked Bar Chart')
# 展示图形
plt.show()
```
在这个示例中,我们首先定义了需要展示的类别(categories)和多个数据(data1,data2,data3)。然后使用`plt.barh`函数分别绘制了不同数据的水平柱状图,并使用`left`参数设置了每个柱状图的起始位置,以实现堆叠效果。最后,通过`plt.legend()`设置图例和`plt.title()`设置标题,最终调用`plt.show()`展示图形。
以上就是用Python绘制横向堆叠柱状图的方法。当然,这只是一个简单的示例,实际应用中你还可以根据自己的需求进一步调整和美化图形。
绘制横向的python柱状图
可以使用matplotlib库绘制横向的Python柱状图。以下是一个简单的例子:
``` python
import matplotlib.pyplot as plt
# 柱状图数据
data = {'A': 20, 'B': 35, 'C': 30, 'D': 25}
# 用于绘制柱状图的数据
values = list(data.values())
# 用于绘制柱状图的标签
labels = list(data.keys())
# 创建一个横向的柱状图
plt.barh(range(len(data)), values, tick_label=labels)
# 添加标题和标签
plt.title('Horizontal Bar Chart')
plt.xlabel('Value')
plt.ylabel('Label')
# 显示图像
plt.show()
```
代码中,我们首先定义一个包含柱状图数据的字典 `data`,然后将数据和标签分别存储在 `values` 和 `labels` 变量中。接下来,我们使用 `plt.barh` 函数来创建一个横向的柱状图,其中 `tick_label` 参数用于指定标签。最后,我们添加了标题和标签,并调用 `plt.show` 函数来显示图像。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)