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

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

本文介绍在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 相关产品和应用

全部下载

专题列表