使用 Matplotlib 创建条形码

Beginner

This tutorial is from open-source community. Access the source code

简介

本实验演示了如何使用 Python 中的 Matplotlib 创建条形码。条形码是使用由 1 和 0 组成的二进制数组生成的,并使用 Axes.imshow 进行渲染。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。

导入所需库

我们首先需要导入必要的库,包括 numpymatplotlib

import matplotlib.pyplot as plt
import numpy as np

创建二进制数组

接下来,我们需要创建用于生成条形码的二进制数组。在这个示例中,我们将使用以下二进制数组:

code = np.array([
    1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1,
    0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0,
    1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1,
    1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1])

设置像素和 DPI 值

我们需要为条形码定义像素和 DPI 值。在这个示例中,我们将使用 4 的像素值和 100 的 DPI 值。

pixel_per_bar = 4
dpi = 100

创建图形和坐标轴

我们需要为条形码创建图形和坐标轴。我们将把图形大小设置为数据点数量的倍数,并关闭所有坐标轴。

fig = plt.figure(figsize=(len(code) * pixel_per_bar / dpi, 2), dpi=dpi)
ax = fig.add_axes([0, 0, 1, 1])  ## span the whole figure
ax.set_axis_off()

渲染条形码

最后,我们可以使用 Axes.imshow 来渲染条形码。我们将使用 code.reshape(1, -1) 把数据转换为一个只有一行的二维数组,使用 imshow(..., aspect='auto') 来处理非方形像素,以及使用 imshow(..., interpolation='nearest') 来防止边缘模糊。

ax.imshow(code.reshape(1, -1), cmap='binary', aspect='auto',
          interpolation='nearest')
plt.show()

总结

在这个实验中,我们学习了如何使用 Python 中的 Matplotlib 创建条形码。我们首先导入了必要的库,然后创建了一个将用于生成条形码的二进制数组。接着,我们设置了像素和 DPI 值,并创建了图形和坐标轴。最后,我们使用 Axes.imshow 渲染了条形码。