在Pyplot的子图中更改直方图

时间:2019-04-09 11:25:09

标签: python matplotlib histogram subplot

我正在比较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)

这怎么可能发生?这是一张显示不同直方图的图像。它们甚至没有镜像。

enter image description here

1 个答案:

答案 0 :(得分:1)

现在作为答案:

这似乎是matplotlib的错误,因为两次绘制相同的数据时也会出现此问题。我在Github here上开了一个问题。

一种解决方法是使用plt.hist(img1, bins=255),依此类推。