這很有趣。
你可以看一下產生的矩形:
ax = plt.subplot(111)
h, bins, rects = ax.hist([2, 2])
for r in rects:
print(r.get_bbox())
# Bbox(x0=1.5, y0=0.0, x1=1.6, y1=0.0)
# Bbox(x0=1.6, y0=0.0, x1=1.7, y1=0.0)
# Bbox(x0=1.7, y0=0.0, x1=1.8, y1=0.0)
# Bbox(x0=1.8000000000000003, y0=0.0, x1=1.9000000000000001, y1=0.0)
# Bbox(x0=1.9, y0=0.0, x1=2.0, y1=0.0)
# Bbox(x0=1.9999999999999998, y0=0.0, x1=2.0999999999999996, y1=2.0)
# Bbox(x0=2.1000000000000005, y0=0.0, x1=2.2000000000000006, y1=0.0)
# Bbox(x0=2.2, y0=0.0, x1=2.3, y1=0.0)
# Bbox(x0=2.3, y0=0.0, x1=2.4, y1=0.0)
# Bbox(x0=2.4000000000000004, y0=0.0, x1=2.5000000000000004, y1=0.0)
顯然,直方圖功能,爲每個箱子,連空的矩形。雖然它們的高度爲0,但它們會傳遞給渲染器,並且在某些情況下會繪製虛假的東西。
我不知道如何防止這種情況。但是,有一個解決方案,但它是相當黑客。 hist
函數爲每個容器放置一個矩形色塊。它可以手動遍歷這些補丁,並刪除那些具有零高度:
ax = plt.subplot(111)
h, bins, rects = ax.hist([2, 2])
ax.patches = [p for p in ax.patches if p.get_height() > 0]
如果你寫了''np.sum((ar <2))'',返回結果是什麼? – MSeifert
我回來了一個0. –
你可以編輯數組或至少同樣多的數組到問題中,以便它仍然顯示0這個「凹凸」?儘量讓它儘可能小。 :) – MSeifert