Python Matplotlib 条形图黑白填充技巧:hatch参数详解

慢慢来
慢慢来
发布时间:2026-10-15| 5人浏览过
原创

本文介绍在Python中使用Matplotlib绘制条形图时,如何仅通过黑白配色和填充图案区分数据。针对学术或出版对颜色限制的要求,详细解析hatch参数(如'/'、'***'、'xxx')的应用,展示如何生成符合要求的黑白条形图,并附带完整可运行代码。

本文分享了利用Python的Matplotlib库实现条形图黑白填充效果的具体代码,供读者参考学习。

黑白条形图绘制需求背景

在撰写专利或学术论文时,常需使用Python的Matplotlib绘制条形图。起初尝试使用三种不同颜色来区分数据系列,效果如原图所示。

随后收到反馈,要求必须使用黑白配色,禁止使用其他颜色。为此,尝试采用灰度等级进行区分,效果如原图所示。

使用hatch参数实现填充区分

然而再次被指出不可行,规定不能使用灰度,必须通过条形框的填充格式(Hatching)来区分数据。经过多方查找,最终找到了解决方案。下图展示了最终的填充效果,完整源码附后。

Matplotlib核心代码实现

实现该效果的核心代码如下:

import matplotlib.pyplot as plt 
import numpy as np
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei']
Y2016 = [83.2, 85, 83.9] 
Y2017 = [80.4, 74.6, 86.5]
Y2018 = [85.8, 87.2, 89.1]
labels = ['准确性', '敏感性', '特异性'] 
bar_width = 0.25 
 
# 绘图
plt.figure(figsize=(10,10))
plt.bar(np.arange(3), Y2016, label='TSVM', color='white', alpha=1, width=bar_width,edgecolor="k",hatch='/') 
plt.bar(np.arange(3) + bar_width, Y2017, label=u'协同训练半监督', color='white', alpha=1, edgecolor="k",width=bar_width,hatch="***")
plt.bar(np.arange(3) + 2*bar_width, Y2018, label=u'结合TSVM和协同训练半监督', color='white', alpha=1, edgecolor="k",width=bar_width,hatch="xxx")
 
# 添加刻度标签 
plt.xticks(np.arange(3) + bar_width, labels)
plt.tick_params(labelsize=20)
# 设置Y轴的刻度范围 
plt.ylim([0, 100]) 
 
# 为每个条形图添加数值标签 
for x2016, y2016 in enumerate(Y2016): 
    plt.text(x2016, y2016 + 2, '%s' % y2016, ha='center',fontsize=20) 
 
for x2017, y2017 in enumerate(Y2017): 
    plt.text(x2017 + bar_width, y2017 + 2, '%s' % y2017, ha='center',fontsize=20)

for x2018, y2018 in enumerate(Y2018): 
    plt.text(x2018 + 2*bar_width, y2018 + 2, '%s' % y2018, ha='center',fontsize=20)
# 显示图例
plt.legend(bbox_to_anchor=(0.5,1), loc=3, borderaxespad=0,fontsize=17)
plt.savefig('foo.png') 
# 显示图形 
plt.show() 

hatch参数详解与密度控制

代码中关键参数为hatch,其取值决定了填充图案的样式。可用的符号包括:'*'、'o'、'O'、'/'、'|'、'+'、'-'、'.'。填充的密度取决于引用符号的数量,例如hatch='/'的填充密度明显低于hatch='///'。

以上就是本文的全部内容,希望对读者有所帮助,欢迎继续支持本站。

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

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