【技术专题】Matplotlib3 Python 数据可视化 - Matplotlib3 绘制条形图(Bar)

大家好,我是锋哥。最近连载更新《Matplotlib3 Python 数据可视化》技术专题。

本课程讲解利用python进行数据可视化 科研绘图-Matplotlib,学习Matplotlib图形参数基本设置,绘图参数及主要函数,以及Matplotlib基础绘图,和Matplotlib高级绘图。同时也配套视频教程 《2026版 Matplotlib3 Python 数据可视化 视频教程》

Matplotlib 的条形图是展示分类数据最常用的图表之一,特别适合比较不同类别的数值大小。以下是条形图的全面介绍及示例代码:

一、核心功能与适用场景

条形图类型:

  • 垂直条形图 :plt.bar()
  • 水平条形图 :plt.barh()
  • 分组条形图:多组数据并列比较
  • 堆叠条形图:显示部分与整体关系

适用场景:

  1. 不同类别数据的比较(产品销量、地区收入)
  2. 时间序列数据对比(月度销售额)
  3. 部分与整体关系可视化(堆叠条形图)

plt.bar() 是 Matplotlib 中用于绘制垂直条形图的核心函数。以下是详细解析及示例:

基本语法:

css 复制代码
plt.bar(x, height, width=0.8, bottom=None, align='center', **kwargs)
参数 说明
x 条形的横坐标位置(标量或数组)
height 条形的高度(y 轴值,标量或数组)
width 条形的宽度(默认 0.8)
bottom 条形的起始基线高度 (用于堆叠条形图,默认从 0 开始)
align 对齐方式:'center'(居中,默认)或 'edge'(左对齐)
**kwargs 其他样式参数(颜色、边框等)

常用 kwargs 参数

参数 说明
color / c 条形填充颜色
edgecolor/ec 边框颜色
linewidth/lw 边框宽度
alpha 透明度
label 图例标签
hatch 填充图案(如 '///')

我们先看一个垂直条形图示例:

ini 复制代码
import matplotlib
import matplotlib.pyplot as plt
​
# 设置matplotlib使用黑体显示中文
matplotlib.rcParams['font.family'] = 'Microsoft YaHei'
​
# 数据准备
categories = ['苹果', '橙子', '香蕉', '葡萄', '芒果']
sales = [45, 32, 28, 51, 39]
​
# 创建图形
plt.figure(figsize=(10, 6))
​
# 绘制条形图
bars = plt.bar(
    categories,
    sales,
    color=['#FF6B6B', '#4ECDC4', '#FFD166', '#A06CD5', '#6CA6CD'],
    edgecolor='black',
    linewidth=1.2
)
​
# 添加数据标签
for bar in bars:
    height = bar.get_height()
    plt.text(bar.get_x() + bar.get_width() / 2.,
             height + 0.5,
             f'{height}',
             ha='center',
             va='bottom',
             fontsize=10)
​
# 设置标题和标签
plt.title('水果销售对比', fontsize=14, pad=20)
plt.xlabel('水果类型', fontsize=12)
plt.ylabel('销售量(千克)', fontsize=12)
plt.grid(axis='y', linestyle='--', alpha=0.7)
​
# 调整布局
plt.tight_layout()
plt.show()

运行效果:

我们再看一个水平条形图示例:

ini 复制代码
import matplotlib
import matplotlib.pyplot as plt
​
# 设置matplotlib使用黑体显示中文
matplotlib.rcParams['font.family'] = 'Microsoft YaHei'
​
# 数据准备
categories = ['苹果', '橙子', '香蕉', '葡萄', '芒果']
sales = [45, 32, 28, 51, 39]
​
plt.figure(figsize=(10, 6))
​
# 绘制水平条形图
bars = plt.barh(
    categories,
    sales,
    color='#5F9EA0',
    height=0.7
)
​
# 添加数据标签
for bar in bars:
    width = bar.get_width()
    plt.text(width + 0.8,
             bar.get_y() + bar.get_height() / 2,
             f'{width}',
             va='center',
             fontsize=10)
​
plt.title('水果销售对比', fontsize=14)
plt.xlabel('销售量(千克)', fontsize=12)
plt.ylabel('水果类型', fontsize=12)
plt.grid(axis='x', linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()

运行效果:

相关推荐
IT_Octopus1 小时前
【零基础入门 LLM 开发 · Day 13】:LangChain 的对话记忆——Message 对象版
人工智能·python·langchain
2603_965148112 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
CCblandy3 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
Cc.Y4 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python
拿本唠嗑AI研究4 小时前
本体工程实战指南:从建模到可维护的完整落地路径
java·人工智能·python·jena·ontology
Smoothcloud润云4 小时前
PyTorch推理服务模型热切换与失败回滚实战:降低版本更新中断
服务器·人工智能·pytorch·python·深度学习·gpu
jsjzsl24 小时前
递归自改进系统(RSI)的本质是自发对称破缺:智能爆炸有界—— AI研发切记盲目投入
人工智能·python·算法
2601_954811825 小时前
机器视觉教学套件选型指南:五维技术参数对比与课程体系评估
python·数码相机
小马不起床5 小时前
零基础玩转 FastAPI_05:后端课程模块
python·fastapi
小王2046 小时前
Day 41:模型注意力机制 — SE / CBAM / ECA
python·深度学习·机器学习