Python利用matplotlib绘制并列双柱状图并标注数值

Jasper
Jasper
发布时间:2026-10-15| 2人浏览过
原创

本文介绍如何使用Python的matplotlib库绘制并列双柱状图,以一周七天两位小朋友吃糖数量为例演示基础绘图。同时提供扩展功能,包括横坐标标签角度倾斜设置以及如何在柱状图上直接标注具体数值,帮助开发者实现更清晰的数据展示效果。

项目场景:

在Python项目中,若需绘制两组数据的双柱状图,可参考以下示例:以一周七天内两位小朋友食用糖果的数量为例,利用matplotlib库完成绘图演示。

代码:

import matplotlib
import matplotlib.pyplot as plt
import numpy as np

def drawHistogram():
    matplotlib.rc("font", family='MicroSoft YaHei')
    list1 = np.array([5, 2, 1, 0, 8, 0, 6])   # 柱状图第一组数据
    list2 = np.array([9, 5, 1, 2, 9, 2, 0])   # 柱状图第二组数据
    length = len(list1)
    x = np.arange(length)   # 横坐标范围
    listDate = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"]

    plt.figure()
    total_width, n = 0.8, 2   # 柱状图总宽度,有几组数据
    width = total_width / n   # 单个柱状图的宽度
    x1 = x - width / 2   # 第一组数据柱状图横坐标起始位置
    x2 = x1 + width   # 第二组数据柱状图横坐标起始位置

    plt.title("一周每天吃悠哈软糖颗数柱状图")   # 柱状图标题
    # plt.xlabel("星期")   # 横坐标label 此处可以不添加
    plt.ylabel("吃悠哈软糖颗数(个)")   # 纵坐标label
    plt.bar(x1, list1, width=width, label="小s吃糖数")
    plt.bar(x2, list2, width=width, label="小y吃糖数")
    plt.xticks(x, listDate)   # 用星期几替换横坐标x的值
    plt.legend()   # 给出图例
    plt.show()

if __name__ == '__main__':
    drawHistogram()

效果图:

扩展功能及代码:

扩展功能一

当横坐标标签较长或文字较多时,可通过设置一定角度进行倾斜展示。在上文代码中,涉及横坐标设置的这一行:

plt.xticks(x, listDate)

可以修改为:

plt.xticks(x, listDate, rotation=30) # rotation为标签旋转角度

横坐标标签旋转30°后的效果如下:

横坐标标签旋转90°后的效果如下:

扩展功能二

若希望在柱状图中直接展示具体数据值,可在代码 plt.legend() 前添加如下代码:

for a, b in zip(x1, list1):
	plt.text(a, b + 0.1, '%.0f' % b, ha='center', va='bottom', fontsize=7)

for a, b in zip(x2, list2):
	plt.text(a, b + 0.1, '%.0f' % b, ha='center', va='bottom', fontsize=7)

添加具体数值后的柱状图效果如下:

补充:Python画图实现同一结点多个柱状图

import numpy as np
x = [1,2]   #横坐标
y = [3,4]   #第一个纵坐标
y1 = [5,6]   #第二个纵坐标
x = np.arange(len(x))  #首先用第一个的长度作为横坐标
width = 0.05    #设置柱与柱之间的宽度
fig,ax = plt.subplots()
ax.bar(x,y,width,alpha = 0.9)
ax.bar(x+width,y1,width,alpha = 0.9,color= 'red')
ax.set_xticks(x +width/2)#将坐标设置在指定位置
ax.set_xticklabels(x)#将横坐标替换成
plt.show()

后续有时间再继续补充扩展功能哦~

总结

到此这篇关于python如何利用matplotlib绘制并列双柱状图并标注数值的文章就介绍到这了,更多相关python matplotlib绘制并列双柱状图内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

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

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 算法库。