數據可視化(6)-Seaborn系列 | 直方圖distplot()
- 2019 年 10 月 7 日
- 筆記
直方圖
seaborn.distplot() 直方圖,品質估計圖,核密度估計圖
該API可以繪製分別直方圖和核密度估計圖,也可以繪製直方圖和核密度估計圖的合成圖 通過設置默認情況下,是繪製合成圖,設置情況圖下:
hist=True:表示要繪製直方圖(默認情況為True),若為False,則不繪製
kde=True:表示要繪製核密度估計圖(默認情況為True),若為False,則繪製
函數原型
seaborn.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None)
參數解讀
a: Series, 一維數組或列表 要輸入的數據,如果設置name屬性,則該名稱將用於標記數據軸; 以下是可選參數: bins: matplotlib hist()的參數 或者 None 作用:指定直方圖規格,若為None,則使用Freedman-Diaconis規則, 該規則對數據中的離群值不太敏感,可能更適用於重尾分布的數據。 它使用 bin 大小 [2∗IQR(X(:))∗numel(X)(−1/4),2∗IQR(Y(:))∗numel(Y)(−1/4)][2∗IQR(X(:))∗numel(X)(−1/4),2∗IQR(Y(:))∗numel(Y)(−1/4)] , 其中 IQR 為四分位差。 hist:bool 是否繪製(標準化)直方圖 kde:bool 是否繪製高斯核密度估計圖 rug:bool 是否在支撐軸上繪製rugplot()圖 {hist,kde,rug,fit} _kws:字典 底層繪圖函數的關鍵字參數 color:matplotlib color 該顏色可以繪製除了擬合曲線之外的所有內容 vertical:bool 如果為True,則觀察值在y軸上,即水平橫向的顯示
案例教程
import seaborn as sns import numpy as np import matplotlib.pyplot as plt sns.set() #構建數據 np.random.seed(0) x = np.random.randn(100) """ 案例1:顯示默認繪圖,其中包含內核密度估計值和直方圖 """ sns.distplot(x,kde=True,hist=False) plt.show()

import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import numpy as np sns.set() #構建數據 np.random.seed(0) x = np.random.randn(100) # 使用pandas來設置x 軸標籤 和y 軸標籤 x = pd.Series(x, name="x variable") """ 案例2:繪製直方圖和核函數密度估計圖 """ sns.distplot(x) plt.show()

import seaborn as sns import matplotlib.pyplot as plt import numpy as np sns.set() #構建數據 np.random.seed(0) x = np.random.randn(100) """ 案例3:繪製核密度估計和地圖 """ sns.distplot(x, rug=True, hist=False) plt.show()

from scipy.stats import norm import seaborn as sns import matplotlib.pyplot as plt import numpy as np sns.set() #構建數據 np.random.seed(0) x = np.random.randn(100) """ 案例4:繪製直方圖和最大似然高斯分布擬合圖 """ sns.distplot(x, fit=norm, kde=False) plt.show()

import seaborn as sns import matplotlib.pyplot as plt import numpy as np sns.set() #構建數據 np.random.seed(0) x = np.random.randn(100) """ 案例5:繪製水平直方圖 (即在垂直軸上繪製分布) """ sns.distplot(x, vertical=True) plt.show()

import seaborn as sns import matplotlib.pyplot as plt import numpy as np sns.set() #構建數據 np.random.seed(0) x = np.random.randn(100) """ 案例7:改變繪圖元素的顏色 """ sns.set_color_codes() sns.distplot(x, color="y") plt.show()

import seaborn as sns import matplotlib.pyplot as plt import numpy as np sns.set() #構建數據 np.random.seed(0) x = np.random.randn(100) # 制定一些繪圖參數 sns.distplot(x, rug=True, rug_kws={"color": "g"}, kde_kws={"color": "k", "lw": 3, "label": "KDE"}, hist_kws={"histtype": "step", "linewidth": 3, "alpha": 1, "color": "g"}) plt.show()

案例地址
案例程式碼已上傳:Github https://github.com/Vambooo/SeabornCN
整理製作:數據分析與可視化學研社
