条码#

此演示展示了如何生成条形码。

计算图形大小,以便像素宽度是数据点数量的倍数,以防止插值伪影。此外,它 Axes被定义为跨越整个图形并且全部Axis关闭。

数据本身是imshow使用渲染的

  • code.reshape(1, -1)将数据转换为一行的二维数组。

  • imshow(..., aspect='auto')允许非方形像素。

  • imshow(..., interpolation='nearest')以防止边缘模糊。这无论如何都不应该发生,因为我们以像素为单位微调了图形宽度,但只是为了安全起见。

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])

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()
ax.imshow(code.reshape(1, -1), cmap='binary', aspect='auto',
          interpolation='nearest')
plt.show()
条码演示

参考

此示例中显示了以下函数、方法、类和模块的使用:

由 Sphinx-Gallery 生成的画廊