备注
Go to the end 下载完整的示例代码.
条形码#
此演示展示了如何生成条形码.
计算图形大小,使宽度(以像素为单位)是数据点数的倍数,以防止插值伪影. 此外, Axes 被定义为跨越整个图形,并且所有 Axis 都被关闭.
数据本身使用 imshow 进行渲染,使用
code.reshape(1, -1)将数据转换为具有一行的 2D 数组.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()

参考
以下函数,方法,类和模块的用法在本例中显示:
matplotlib.axes.Axes.imshow/matplotlib.pyplot.imshowmatplotlib.figure.Figure.add_axes