Python使用Matplotlib绘制双柱形图对比数据

Owen
Owen
发布时间:2026-10-13| 3人浏览过
原创

本文介绍如何使用Python的Matplotlib库绘制双柱形图,通过具体代码示例展示如何对比两组数据(如学生成绩)。内容涵盖字体配置、柱体宽度设置、图例添加及数据标签显示等关键步骤,帮助开发者快速掌握基础图表定制方法。

图表能够比枯燥的表格更直观地呈现信息,简洁且有力。在实际工作中,我们常需定期监控某些数值指标,例如服务器连接数、活跃用户数量或特定按钮的点击次数,并通过邮件或网页进行展示。当我们需要关注的不仅仅是数值本身,而是数值的变化趋势、对比关系或异常波动时,图表便显得尤为关键。将数值转化为可视化图像需要借助第三方库,而在Python生态中,matplotlib是最优秀的图表库之一。(个人觉得,Python最大的优势在于其丰富的第三方库资源,使得实现各种需求变得轻而易举。)

Matplotlib的名称暗示了其提供了一套与MATLAB相似的API接口。其文档非常完善,示例页面提供了上百种图表的入门代码,可以说只有你想不到的效果,没有它做不到的实现。

这里举一个稍复杂的例子:假设小明和小红两位同学分别有语文、数学和英语三门课程的成绩,我们使用双柱形图来输出他们各项成绩的对比情况:

#!/usr/bin/env python
# coding: utf-8

import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import numpy as np

# 必须配置中文字体,否则会显示成方块
# 注意所有希望图表显示的中文必须为unicode格式
custom_font = mpl.font_manager.FontProperties(fname='/Library/Fonts/华文细黑.ttf')

font_size = 10 # 字体大小
fig_size = (8, 6) # 图表大小

names = (u'小明', u'小红') # 姓名
subjects = (u'语文', u'数学', u'英语') # 科目
scores = ((65, 90, 75), (85, 80, 90)) # 成绩

# 更新字体大小
mpl.rcParams['font.size'] = font_size
# 更新图表大小
mpl.rcParams['figure.figsize'] = fig_size
# 设置柱形图宽度
bar_width = 0.35

index = np.arange(len(scores[0]))
# 绘制「小明」的成绩
rects1 = plt.bar(index, scores[0], bar_width, color='#0072BC', label=names[0])
# 绘制「小红」的成绩
rects2 = plt.bar(index + bar_width, scores[1], bar_width, color='#ED1C24', label=names[1])
# X轴标题
plt.xticks(index + bar_width, subjects, fontproperties=custom_font)
# Y轴范围
plt.ylim(ymax=100, ymin=0)
# 图表标题
plt.title(u'企鹅班同学成绩对比', fontproperties=custom_font)
# 图例显示在图表下方
plt.legend(loc='upper center', bbox_to_anchor=(0.5, -0.03), fancybox=True, ncol=5, prop=custom_font)

# 添加数据标签
def add_labels(rects):
  for rect in rects:
    height = rect.get_height()
    plt.text(rect.get_x() + rect.get_width() / 2, height, height, ha='center', va='bottom')
    # 柱形图边缘用白色填充,纯粹为了美观
    rect.set_edgecolor('white')

add_labels(rects1)
add_labels(rects2)

# 图表输出到本地
plt.savefig('scores_par.png')

最终生成的图表效果如下所示:

总结

通过上述代码片段可以看出:Matplotlib是一个自由度极高的图表库,能够实现从颜色、字体等基础属性到图例、网格等图表属性的定制化输出。

以上就是本文关于Python绘制双柱形图代码实例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

Django admin实现图书管理系统菜鸟级教程完整实例

Python使用PIL进行图像处理(等比例压缩、裁剪)实例代码

Python实现读取TXT文件并绘制三维图简单代码示例

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。