Python-hist,distplot bin寬度不一致問題的解決方案

python的hist有一個bug,之前一直沒有解決。繪制直方圖的時候,往往出現(xiàn)兩組數(shù)據(jù)由于分布不一樣,,導(dǎo)致出來的圖片中,雖然是一樣數(shù)目的bins,但是bin的寬窄不同。

而我想得到的是,,

雖然數(shù)據(jù)分布不同,我希望兩組數(shù)據(jù)共享同樣寬度的bin,希望每一個bin是一樣的寬度

一方面,好看
另一方面,這樣才對啊

如何解決呢?

  1. 直方圖使用distplot

distplot(seaborn)是加強(qiáng)版的hist(pandas),都是做直方圖
先來個示例代碼:

from numpy.random import randn
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
a = np.random.rand(200)*50
b = np.random.rand(200)*100
fig, ax = plt.subplots()
sns.distplot(a, bins=10, ax=ax, kde=False, color="blue")
sns.distplot(b, bins=10, ax=ax, kde=False, color="red")
ax.set_xlim([-10,110])
image

很明顯看得出上圖中,雖然a和b的bins都指定為10,但是繪制在同一張圖上的時候,python實際是使用每一組數(shù)據(jù)的最小值和最大值之間的范圍除以bins,得到各自bins的范圍。

  1. 解決方法

很簡單:指定bin的寬度就可以了,可以用range傳入,或者直接給出一個列表,range范圍
劃重點 ,注意這一點,只有這一點

bins=range(0,110,10)
把這個加入代碼的bins中就可以了。

fig, ax = plt.subplots()
bins=range(0,110,10)

sns.distplot(a, bins, ax=ax, kde=False, color="blue")
sns.distplot(b, bins, ax=ax, kde=False, color="red")
ax.set_xlim([-10,110])
image

可以看出加上這個bins=range(0,110,10)的參數(shù)之后,得到了我們想看到的結(jié)果,bin的寬度完全一致了!

好,我們這次的小tip就分享完了,如果有幫助,希望可以點個贊賞哦,或者右邊點個喜歡吧!

其實hist還有一個小bug,也是挺頭疼的,,就是norm后,縱軸不是百分比,那么我想要百分比怎么做呢?下次再分享吧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容