matplotlib 横向柱状图
时间: 2025-05-10 14:17:09 浏览: 33
<think>好的,用户现在想用Matplotlib绘制横向柱状图,我需要根据之前的引用和知识来解答。首先,回忆一下引用里的内容,引用[2]提到了plt.bar()函数绘制普通柱状图,但用户需要横向的,应该用plt.barh()。记得横向和纵向的参数顺序不同,纵向是x和height,横向是y和width。
用户可能需要示例代码,所以得准备一个简单的例子。比如,用类别和数值的数据,调用barh函数,然后设置标题和标签。引用里提到的添加标题和标签的方法可以直接参考,比如plt.title(), plt.xlabel(), plt.ylabel(),不过横向的话,x轴和y轴的标签可能需要调换,比如xlabel应该是数值,ylabel是类别。
另外,引用[3]提到并排柱状图的处理,虽然用户现在要横向,但如果有多个数据集可能需要调整位置,比如用numpy的arange来定位,每个柱子右移一定的宽度。不过用户当前的问题可能只需要基础横向图,但可以提一下如何做分组或堆叠的横向柱状图作为扩展。
还需要注意代码的正确性,比如导入matplotlib.pyplot as plt,显示图表用plt.show()。确保示例代码能直接运行,数据清晰。可能还要提到参数如颜色、宽度等自定义选项,帮助用户进一步美化图表。
检查是否有其他注意事项,比如坐标轴的顺序,是否需要对y轴进行排序,或者调整图表尺寸。最后,总结一下步骤,确保结构清晰,分点说明,让用户容易跟随。</think>### 使用 Matplotlib 绘制横向柱状图的方法
Matplotlib 中绘制横向柱状图主要通过 `plt.barh()` 函数实现,与纵向柱状图 `plt.bar()` 的参数类似,但需注意横纵坐标的交换。以下是具体步骤和示例代码:
---
#### **1. 基础横向柱状图**
```python
import matplotlib.pyplot as plt
# 定义数据
categories = ['A', 'B', 'C', 'D']
values = [15, 25, 10, 30]
# 绘制横向柱状图
plt.barh(categories, values, color='skyblue')
# 添加标题和标签
plt.title('Horizontal Bar Chart Example')
plt.xlabel('Values')
plt.ylabel('Categories')
# 显示图表
plt.show()
```
- **关键参数**:
- `categories` 作为 `y` 轴标签,`values` 作为 `x` 轴数值。
- `color` 可自定义颜色,例如 `color='#ff9999'`。
---
#### **2. 带自定义样式的横向柱状图**
若需调整柱子高度、添加边框或标签:
```python
plt.barh(
categories,
values,
height=0.6, # 控制柱子高度
color='lightgreen',
edgecolor='black' # 边框颜色
)
# 在柱子末端添加数值标签
for index, value in enumerate(values):
plt.text(value, index, str(value), ha='left', va='center')
plt.title('Styled Horizontal Bar Chart')
plt.xlabel('Values')
plt.ylabel('Categories')
plt.show()
```
---
#### **3. 多组数据并列横向柱状图**
若需对比两组数据(如实际值 vs 目标值):
```python
import numpy as np
# 定义两组数据
actual = [20, 35, 30, 25]
target = [18, 30, 35, 20]
# 生成y轴位置(用于错开两组柱子)
y = np.arange(len(categories))
bar_height = 0.35 # 柱子高度
# 绘制两组横向柱子
plt.barh(y - bar_height/2, actual, bar_height, label='Actual', color='orange')
plt.barh(y + bar_height/2, target, bar_height, label='Target', color='teal')
# 设置y轴刻度和标签
plt.yticks(y, categories)
plt.legend()
plt.title('Actual vs Target Comparison')
plt.xlabel('Values')
plt.ylabel('Categories')
plt.show()
```
---
### **关键要点总结**
1. **函数选择**:横向柱状图使用 `barh()`,纵向使用 `bar()`[^2]。
2. **参数顺序**:`barh(y, width)` 中,`y` 是类别标签,`width` 是柱子长度。
3. **样式调整**:通过 `height`、`edgecolor` 等参数优化视觉效果。
4. **多组数据**:通过调整 `y` 轴位置实现并列或堆叠效果[^3]。
---
阅读全文
相关推荐

















