我正在比较python中图像的直方图。就是这样,当我注意到用pyplot的 subplots 绘制两次的同一图像的直方图可能看起来有所不同,具体取决于subplots索引。这是一个最小的示例:
fig, (ax0, ax1) = plt.subplots(nrows = 2, ncols = 2, figsize = (15,15))
img1 = blocks_1[0][0]
img2 = blocks_1[0][0]
ax0[0].imshow(img1)
ax1[0].imshow(img2)
hist3, bins3 = np.histogram(img1, bins=255)
hist4, bins4 = np.histogram(img2, bins=255)
ax0[1].bar(bins3[:-1], hist3)
ax1[1].bar(bins4[:-1], hist4)
如果我按以下方式绘制它们,则jupyter笔记本中的两个直方图看起来会有所不同:
fig, (ax0, ax1) = plt.subplots(nrows = 2, ncols = 2, figsize = (10,10))
img1 = blocks_1[0][0]
img2 = blocks_1[0][0]
ax0[0].imshow(img1)
ax0[1].imshow(img2)
hist3, bins3 = np.histogram(img1, bins=255)
hist4, bins4 = np.histogram(img2, bins=255)
ax1[0].bar(bins3[:-1], hist3)
ax1[1].bar(bins4[:-1], hist4)
这怎么可能发生?这是一张显示不同直方图的图像。它们甚至没有镜像。
答案 0 :(得分:1)
现在作为答案:
这似乎是matplotlib的错误,因为两次绘制相同的数据时也会出现此问题。我在Github here上开了一个问题。
一种解决方法是使用plt.hist(img1, bins=255)
,依此类推。