简介
本实验演示了如何使用 Python 中的 Matplotlib 创建条形码。条形码是使用由 1 和 0 组成的二进制数组生成的,并使用 Axes.imshow 进行渲染。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
导入所需库
我们首先需要导入必要的库,包括 numpy 和 matplotlib。
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 渲染了条形码。