Python barh()函数教程 - 绘制水平柱状图完全指南
- Python
- 2025-07-31
- 467
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发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20256891.html
发表评论