當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python matplotlib Axes.hist用法及代碼示例


本文簡要介紹 python 語言中 matplotlib.axes.Axes.hist 的用法。

用法

Axes.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, *, data=None, **kwargs)

計算並繪製直方圖。

此方法使用 numpy.histogram x 中的數據進行分箱,並計算每個分箱中的值數量,然後將分布繪製為 BarContainer Polygon binsrangedensityweights 參數轉發到 numpy.histogram

如果數據已經分箱和計數,請使用 bar stairs 繪製分布圖:

counts, bins = np.histogram(x)
plt.stairs(counts, bins)

或者,使用 hist() 繪製預先計算的 bin 和計數,將每個 bin 視為權重等於其計數的單個點:

plt.hist(bins[:-1], bins, weights=counts)

數據輸入 x 可以是單一數組、可能不同長度的數據集列表([ x0x1 、...]),或者每列都是一個數據集的 2D ndarray。請注意,ndarray 形式相對於列表形式是轉置的。如果輸入是數組,則返回值是元組( nbinspatches );如果輸入是數組序列,則返回值是一個元組 ([ n0 , n1 , ...], bins , [ patches0 , patches1 , ...])。

不支持屏蔽數組。

參數
x (n,) 數組或 (n,) 數組序列

輸入值,這需要單個數組或不需要具有相同長度的數組序列。

bins int 或序列或 str,默認值:rcParams["hist.bins"] (默認值:10 )

如果bins 是整數,則它定義範圍內equal-width 箱的數量。

如果bins是一個序列,它定義了bin邊,包括第一個bin的左邊和最後一個bin的右邊;在這種情況下,箱子的間距可能不均勻。除了最後一個 (righthand-most) 箱子外,所有箱子都是半開的。換句話說,如果 bins 是:

[1, 2, 3, 4]

那麽第一個 bin 是 [1, 2) (包括 1,但不包括 2),第二個 bin 是 [2, 3) 。然而,最後一個 bin 是 [3, 4] ,其中 includes 4。

如果bins是字符串,則它是 numpy.histogram_bin_edges 支持的分箱策略之一:'auto', 'fd', 'doane', 'scott', 'stone', 'rice', 'sturges'或'sqrt'。

range 元組或無,默認:無

箱子的下限和上限範圍。較低和較高的異常值將被忽略。如果未提供,則 range(x.min(), x.max()) 。如果 bins 是序列,則範圍無效。

如果 bins 是序列或指定了 range,則自動縮放基於指定的 bin 範圍而不是 x 的範圍。

density 布爾值,默認值:假

如果 True ,繪製並返回概率密度:每個 bin 將顯示該 bin 的原始計數除以計數總數 and the bin width ( density = counts / (sum(counts) * np.diff(bins)) ),以便直方圖下方的麵積積分為 1 ( np.sum(density * np.diff(bins)) == 1 )。

如果 stacked 也是 True ,則直方圖的總和標準化為 1。

weights (n,) 類似數組或無,默認值:無

權重數組,其形狀與 x 相同。 x 中的每個值僅對 bin 計數貢獻其相關權重(而不是 1)。如果 densityTrue ,則對權重進行歸一化,以便密度在該範圍內的積分保持為 1。

cumulative 布爾或-1,默認值:False

如果 True ,則計算直方圖,其中每個箱給出該箱中的計數以及較小值的所有箱。最後一個 bin 給出了數據點的總數。

如果 density 也是 True,則對直方圖進行歸一化,使最後一個 bin 等於 1。

如果cumulative是小於0的數字(例如-1),則累加方向相反。在這種情況下,如果 density 也是 True ,則對直方圖進行歸一化,使第一個 bin 等於 1。

bottom 類似數組、標量或無,默認值:無

每個 bin 底部的位置,即 bin 從 bottom 繪製到 bottom + hist(x, bins) 如果是標量,則每個 bin 的底部移動相同的量。如果是數組,則每個 bin 獨立移動,並且底部的長度必須與 bin 的數量匹配。如果無,則默認為 0。

histtype {'bar', 'barstacked', 'step', 'stepfilled'},默認:'bar'

要繪製的直方圖的類型。

  • 'bar' 是傳統的bar-type 直方圖。如果給出多個數據,則條形圖並排排列。

  • 'barstacked' 是 bar-type 直方圖,其中多個數據相互堆疊。

  • 'step' 生成默認未填充的線圖。

  • 'stepfilled' 生成默認填充的線圖。

align {'left', 'mid', 'right'},默認:'mid'

直方圖條的水平對齊方式。

  • 'left':條形圖位於左側 bin 邊的中心。

  • 'mid':條形圖位於 bin 邊之間的中心。

  • 'right':條形圖位於右側 bin 邊的中心。

orientation {'vertical', 'horizontal'},默認:'vertical'

如果'horizontal', barh 將用於bar-type直方圖,bottom kwarg將是左邊。

rwidth float 或 None,默認值:None

條形的相對寬度占 bin 寬度的一部分。如果是 None ,則自動計算寬度。

如果histtype 是'step' 或'stepfilled',則忽略。

log 布爾值,默認值:假

如果 True ,直方圖軸將設置為對數刻度。

color 顏色或類似顏色的數組或無,默認值:無

顏色或顏色序列,每個數據集一個。默認 (None) 使用標準線條顏色序列。

label str 或 None,默認值:None

字符串,或匹配多個數據集的字符串序列。條形圖為每個數據集生成多個補丁,但隻有第一個獲得標簽,因此 legend 將按預期工作。

stacked 布爾值,默認值:假

如果 True ,則多個數據堆疊在一起 如果 False 如果 histtype 為 'bar',則多個數據並排排列;如果 histtype 為 'step',則多個數據並排排列

返回
n 數組或數組列表

直方圖箱的值。有關可能語義的說明,請參閱densityweights。如果輸入 x 是一個數組,則這是一個長度為 nbins 的數組。如果輸入是數組序列 [data1, data2, ...] ,則這是一個數組列表,其中每個數組的直方圖值的順序相同。即使不使用加權或標準化,數組n(或其元素數組)的數據類型也將始終為浮點型。

bins 數組

箱子的邊。長度 nbins + 1(最後一個 bin 的 nbins 左邊和右邊)。即使傳入多個數據集,也始終是單個數組。

patches BarContainer 或單個 Polygon 的列表或此類對象的列表

如果有多個輸入數據集,則用於創建此類容器的直方圖或列表的各個藝術家的容器。

其他參數
data 可索引對象,可選

如果給出,以下參數還接受字符串 s ,該字符串被解釋為 data[s] (除非這引發異常):

x , weights

**kwargs

Patch 屬性

注意

對於大量 bin (>1000),通過使用 stairs 繪製預先計算的直方圖 (plt.stairs(*np.histogram(data)) ) 可以顯著加速繪圖速度。或者將histtype設置為'step'或'stepfilled',而不是'bar'或'barstacked'。

相關用法


注:本文由純淨天空篩選整理自skytowner.com大神的英文原創作品 matplotlib.axes.Axes.hist。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。