簡體   English   中英

matplotlib直方圖“ hist”中的空白

[英]Gaps in matplotlib's histogram `hist`

我正在學習有關Python的在線課程。 這是逐字記錄的代碼。 它進行100次隨機行走的蒙特卡洛重復,每個步10個步。

import numpy as np
import matplotlib.pyplot as plt
np.random.seed(123)
final_tails = []
for x in range(100) :
   tails = [0]
   for x in range(10) :
      coin = np.random.randint(0, 2)
      tails.append(tails[x] + coin)
   final_tails.append(tails[-1])
plt.hist(final_tails, bins = 10)
plt.show()

課程說,我應該使情節無間斷。 我得到的桿高度完全相同,順序完全相同,但是它們之間有一些奇怪的間距。

誰能證實或解釋這個結果?

在此處輸入圖片說明 在此處輸入圖片說明

我在用:

  • Python 3.7.1 64位
  • Windws 7 64位
  • 間諜3.3.2

謝謝。

后記

我注意到,與課程的鄰接條不同,我的垃圾箱邊緣與整數對齊。 這不是很好,因為數據將是整數,但是整數落在bin邊的左側還是右側應該是一致的。 因此,似乎無法解釋差距。 但是,這可能意味着bin邊緣的自動生成在matplotlib的演變過程中發生了變化。 我不知道課程使用什么版本。

PS以下內容表明問題在於bin邊緣未跨越數據值范圍內的所有整數:

print( np.unique( np.array( final_tails ) ) )
print( np.unique( final_tails ) ) # data values
hist, bin_edges = np.histogram( final_tails )
print(bin_edges) # bin edges
print(hist) # bar heights
  • 數據值為:[2 3 4 5 6 7 8 9]

  • 垃圾箱邊緣為:[2。 2.7 3.4 4.1 4.8 5.5 6.2 6.9 7.6 8.3 9.]

  • 鋼筋高度為:[2 10 23 0 21 27 0 10 6 1]

我使用以下方法獲得了該課程的不錯的鄰接酒吧:

plt.hist( final_tails ,
   bins = np.arange( min( final_tails ) - 0.5 ,
                     max( final_tails ) + 1.5 , 1.0 ) ,
   edgecolor="k" )
plt.show()

我尚未將其發布為答案,這要歸功於提供詳細信息的saibhaskar和ImportanceOfBeingErnest。

但是,我確實想知道是否需要自定義垃圾箱邊緣是因為在創建課程資料與現在之間,自動垃圾箱邊緣的方案已更改。

數據的最小值和最大值分別為2和9。 將這個范圍除以10個檔位,則意味着每個檔位的寬度為0.7。 我們可以計算出2、2.7、3.4、4.1、4.8等邊。

print(min(final_tails), max(final_tails))
# 2 9
step = (max(final_tails)-min(final_tails))/10
print(step)
# 0.7
edges = np.linspace(min(final_tails), max(final_tails), 10+1)
print(edges)
# [2.0 2.7 3.4 4.1 4.8 5.5 6.2 6.9 7.6 8.3 9.0 ]

由於您的數據只是整數,例如在4.1和4.8之間的bin中,因此沒有數據,因此該繪圖中的bin條形缺失。

我懷疑您在課程中顯示的圖像是由與此處顯示的代碼不同的代碼產生的。

您將獲得頻率作為每個數字的輸出。 因此,空白的原因是沒有出現1,2和9之類的數字。

您的列表( final_tails )包含數據[3, 6, 4, 5, 4, 5, 3, 5, 4, 6, 6, 8, 6, 4, 7, 5, 7, 4, 3, 3, 4, 5, 8, 5, 6, 5, 7, 6, 4, 5, 8, 5, 8, 4, 6, 6, 3, 4, 5, 4, 7, 8, 9, 4, 3, 4, 5, 6, 4, 2, 6, 6, 5, 7, 5, 4, 5, 5, 6, 7, 6, 6, 6, 3, 6, 3, 6, 5, 6, 5, 6, 4, 6, 6, 3, 4, 4, 2, 4, 5, 4, 6, 6, 6, 8, 4, 6, 5, 7, 4, 6, 5, 4, 6, 7, 3, 7, 4, 5, 7] final_tails [3, 6, 4, 5, 4, 5, 3, 5, 4, 6, 6, 8, 6, 4, 7, 5, 7, 4, 3, 3, 4, 5, 8, 5, 6, 5, 7, 6, 4, 5, 8, 5, 8, 4, 6, 6, 3, 4, 5, 4, 7, 8, 9, 4, 3, 4, 5, 6, 4, 2, 6, 6, 5, 7, 5, 4, 5, 5, 6, 7, 6, 6, 6, 3, 6, 3, 6, 5, 6, 5, 6, 4, 6, 6, 3, 4, 4, 2, 4, 5, 4, 6, 6, 6, 8, 4, 6, 5, 7, 4, 6, 5, 4, 6, 7, 3, 7, 4, 5, 7]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM