当前位置:首页 > Python > 正文

Python barh()函数教程 - 绘制水平柱状图完全指南

Python barh()函数教程:绘制水平柱状图完全指南

什么是barh()函数?

在Python的数据可视化库matplotlib中,barh()函数用于创建水平柱状图(条形图)。与垂直柱状图相比,水平柱状图特别适合:

  • 展示类别名称较长的数据
  • 比较多个类别的数值大小
  • 当类别数量较多时提高可读性

本教程将指导您从基础到高级使用barh()函数,并展示如何创建专业的数据可视化图表。

安装与准备

在使用barh()函数前,请确保已安装matplotlib库:

pip install matplotlib

导入所需库:

import matplotlib.pyplot as plt
import numpy as np

基础水平柱状图

创建一个简单水平柱状图的基本步骤:

  1. 准备类别标签和数据
  2. 使用plt.barh()创建图表
  3. 添加标题和标签
  4. 显示图表

示例代码:

# 创建数据
categories = ['电子产品', '服装', '食品', '书籍', '家居']
values = [120, 85, 150, 65, 95]

# 创建水平柱状图
plt.barh(categories, values)

# 添加标题和标签
plt.title('不同类别产品销售情况')
plt.xlabel('销售额 (万元)')

# 显示图表
plt.show()
Python barh()函数教程 - 绘制水平柱状图完全指南  matplotlib barh 水平柱状图 数据可视化 Python教程 2025 第1张

高级定制技巧

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()
Python barh()函数教程 - 绘制水平柱状图完全指南  matplotlib barh 水平柱状图 数据可视化 Python教程 2025 第2张

最佳实践与技巧

  • 排序数据:将数据按值排序可以提高图表的可读性
  • 合理使用颜色:使用颜色突出重要数据或表示不同类别
  • 添加网格线:使用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 barh()函数教程 - 绘制水平柱状图完全指南  matplotlib barh 水平柱状图 数据可视化 Python教程 2025 第3张

实际应用场景

水平柱状图在多种场景中非常有用:

业务分析

比较不同产品、地区或部门的绩效指标

调查结果

展示问卷调查中不同选项的选择比例

时间管理

可视化不同活动所花费的时间比例

资源分配

比较不同项目或部门的预算分配

掌握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格式。

发表评论