2023/6/9 19:48:46 Python-matplotlib 绘制横向堆叠柱形图主要使用ax.barh()函数进行绘制,需要什么头文件?用barh‘b1=ax.barh(range(len(y)),x1,color= 'b',ec='k',left=x)’报错ValueError: shape mismatch: objects cannot be broadcast to a single shape
时间: 2024-03-22 12:37:06 浏览: 118
在Python中,绘制横向堆叠柱形图需要使用matplotlib库中的pyplot模块。因此,您需要使用以下代码导入pyplot模块:
```python
import matplotlib.pyplot as plt
```
在使用`ax.barh()`函数绘制横向堆叠柱形图时,该函数的参数应该是列表或数组类型,分别表示每个柱形的高度和宽度。在您提供的代码中,`x`和`x1`应该是长度相同的列表或数组,分别表示两个数据集的宽度。`y`应该是一个列表或数组,表示每个柱形的高度。
您遇到的错误可能是由于`x`和`x1`的长度不一致导致的。请确保它们的长度相等,或者使用numpy库中的`numpy.array()`函数将它们转换为数组类型。
下面是一个简单的示例代码,演示如何使用`ax.barh()`函数绘制横向堆叠柱形图:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
x = np.array([1, 2, 3, 4, 5])
x1 = np.array([2, 4, 1, 3, 5])
y = np.array([1, 2, 3, 4, 5])
# 创建画布和坐标轴
fig, ax = plt.subplots()
# 绘制柱形图
b1 = ax.barh(range(len(y)), x1, color='b', ec='k')
b2 = ax.barh(range(len(y)), x, color='r', ec='k', left=x1)
# 设置图例和标题
ax.legend((b1[0], b2[0]), ('Data 1', 'Data 2'))
ax.set_title('Horizontal Stacked Bar Chart')
# 显示图形
plt.show()
```
希望对您有所帮助!
阅读全文