Python barh()函数教程 - 绘制水平柱状图完全指南
- Python
- 2025-07-31
- 682
Python barh()函数教程:绘制水平柱状图完全指南
什么是barh()函数?
在Python的数据可视化库matplotlib中,barh()函数用于创建水平柱状图(条形图)。与垂直柱状图相比,水平柱状图特别适合:
- 展示类别名称较长的数据
- 比较多个类别的数值大小
- 当类别数量较多时提高可读性
本教程将指导您从基础到高级使用barh()函数,并展示如何创建专业的数据可视化图表。
安装与准备
在使用barh()函数前,请确保已安装matplotlib库:
pip install matplotlib
导入所需库:
import matplotlib.pyplot as plt import numpy as np
基础水平柱状图
创建一个简单水平柱状图的基本步骤:
- 准备类别标签和数据
- 使用
plt.barh()创建图表 - 添加标题和标签
- 显示图表
示例代码:
# 创建数据
categories = ['电子产品', '服装', '食品', '书籍', '家居']
values = [120, 85, 150, 65, 95]
# 创建水平柱状图
plt.barh(categories, values)
# 添加标题和标签
plt.title('不同类别产品销售情况')
plt.xlabel('销售额 (万元)')
# 显示图表
plt.show()
高级定制技巧
barh()函数提供了多种参数用于定制图表外观:
1. 调整条柱颜色
colors = ['#3498db', '#2ecc71', '#e74c3c', '#f39c12', '#9b59b6'] plt.barh(categories, values, color=colors)
2. 添加数据标签
fig, ax = plt.subplots()
bars = ax.barh(categories, values)
# 在每个条柱上添加数值标签
for bar in bars:
width = bar.get_width()
ax.text(width + 3, bar.get_y() + bar.get_height()/2,
f'{width}', ha='left', va='center')
3. 分组水平柱状图
# 准备数据
categories = ['Q1', 'Q2', 'Q3', 'Q4']
product_A = [120, 135, 145, 160]
product_B = [85, 95, 110, 125]
# 设置位置
y = np.arange(len(categories))
height = 0.35
# 创建分组柱状图
plt.barh(y - height/2, product_A, height, label='产品A', color='#3498db')
plt.barh(y + height/2, product_B, height, label='产品B', color='#2ecc71')
# 添加标签和标题
plt.yticks(y, categories)
plt.xlabel('销售额')
plt.title('季度产品销售额对比')
plt.legend()
最佳实践与技巧
- 排序数据:将数据按值排序可以提高图表的可读性
- 合理使用颜色:使用颜色突出重要数据或表示不同类别
- 添加网格线:使用
plt.grid(axis='x')添加水平网格线提高可读性 - 设置条柱间距:调整
height参数控制条柱间距 - 添加数据源:在图表底部注明数据来源
完整示例:专业水平柱状图
# 准备数据(按值排序)
data = {'电子产品': 120, '服装': 85, '食品': 150, '书籍': 65, '家居': 95}
sorted_data = dict(sorted(data.items(), key=lambda item: item[1]))
categories = list(sorted_data.keys())
values = list(sorted_data.values())
# 创建图表和子图
fig, ax = plt.subplots(figsize=(10, 6))
# 创建水平柱状图(使用渐变色)
colors = plt.cm.Blues(np.linspace(0.4, 1, len(categories)))
bars = ax.barh(categories, values, color=colors, height=0.6)
# 添加数据标签
for bar in bars:
width = bar.get_width()
ax.text(width + 2, bar.get_y() + bar.get_height()/2,
f'¥{width}万', va='center', fontsize=10)
# 添加标题和标签
ax.set_title('2023年产品类别销售额排名', fontsize=14, pad=20)
ax.set_xlabel('销售额 (万元)', fontsize=12)
ax.xaxis.set_label_position('top')
ax.xaxis.tick_top()
# 美化图表
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.grid(axis='x', linestyle='--', alpha=0.7)
ax.set_axisbelow(True)
# 添加数据来源
plt.figtext(0.5, 0.01, "数据来源:公司2023年度销售报告",
ha="center", fontsize=9, alpha=0.7)
plt.tight_layout()
plt.show()
实际应用场景
水平柱状图在多种场景中非常有用:
业务分析
比较不同产品、地区或部门的绩效指标
调查结果
展示问卷调查中不同选项的选择比例
时间管理
可视化不同活动所花费的时间比例
资源分配
比较不同项目或部门的预算分配
掌握Python数据可视化
通过本教程,您已经学会了如何使用matplotlib的barh()函数创建各种水平柱状图。从基础图表到高级定制,这些技能将帮助您更有效地展示和分析数据。
继续探索matplotlib文档,了解更多定制选项和高级功能!
常见问题解答
Q: 如何调整水平柱状图的条柱宽度?
A: 使用height参数控制条柱的高度(在水平柱状图中相当于宽度)。例如:plt.barh(categories, values, height=0.5)
Q: 如何在水平柱状图中添加图例?
A: 在barh()函数中添加label参数,然后调用plt.legend()显示图例。
Q: 如何保存生成的图表?
A: 使用plt.savefig('filename.png')保存图表,支持PNG、JPG、SVG和PDF格式。
本文由SheQiaoRong于2025-07-31发表在吾爱品聚,如有疑问,请联系我们。
本文链接:http://521pj.cn/20256891.html
发表评论