python 中直方圖繪制


一、直方圖繪制參數詳解

1、plt.hist(x, bins=10, range=None, normed=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False)

  • x:指定要繪制直方圖的數據。
  • bins:指定直方圖條形的個數。
  • range:指定直方圖數據的上下界,默認包含繪圖數據的最大值和最小值。
  • normed:是否將直方圖的頻數轉換成頻率。
  • weights:該參數可為每一個數據點設置權重。
  • cumulative:是否需要計算累計頻數或頻率。
  • bottom:可以為直方圖的每個條形添加基准線,默認為0。
  • histtype:指定直方圖的類型,默認為bar,除此之外,還有barstacked、step和stepfilled
  • align:設置條形邊界值的對齊方式,默認為mid,另外還有left和right
  • orientation:設置直方圖的擺放方向,默認為垂直方向
  • rwidth:設置直方圖條形的寬度
  • log:是否需要對繪圖數據進行log變換
  • color:設置直方圖的填充色
  • edgecolor:設置直方圖邊框色
  • label:設置直方圖的標簽,可通過legend展示其圖例
  • stacked:當有多個數據時,是否需要將直方圖呈堆疊擺放,默認水平擺放

官方鏈接:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.hist.html#matplotlib.pyplot.hist

①繪制直方圖實例

 1 # matplotlib模塊繪制直方圖
 2 # 讀入數據
 3 Titanic = pd.read_csv('titanic_train.csv')
 4 # 檢查年齡是否有缺失
 5 any(Titanic.Age.isnull())
 6 # 不妨刪除含有缺失年齡的觀察
 7 Titanic.dropna(subset=['Age'], inplace=True)
 8 # 繪制直方圖
 9 plt.hist(x = Titanic.Age, # 指定繪圖數據
10          bins = 20, # 指定直方圖中條塊的個數
11          color = 'steelblue', # 指定直方圖的填充色
12          edgecolor = 'black' # 指定直方圖的邊框色
13          )
14 # 添加x軸和y軸標簽
15 plt.xlabel('年齡')
16 plt.ylabel('頻數')
17 # 添加標題
18 plt.title('乘客年齡分布')
19 # 顯示圖形
20 plt.show()

      

 ②繪制直方圖與核密度圖

 1 # Pandas模塊繪制直方圖和核密度圖
 2 # 讀入數據
 3 Titanic = pd.read_csv('titanic_train.csv')
 4 # 繪制直方圖
 5 Titanic.Age.plot(kind = 'hist', bins = 20, color = 'steelblue', edgecolor = 'black', normed = True, label = '直方圖')
 6 # 繪制核密度圖
 7 Titanic.Age.plot(kind = 'kde', color = 'red', label = '核密度圖')
 8 # 添加x軸和y軸標簽
 9 plt.xlabel('年齡')
10 plt.ylabel('核密度值')
11 # 添加標題
12 plt.title('乘客年齡分布')
13 # 顯示圖例
14 plt.legend()
15 # 顯示圖形
16 plt.show()

根據數據需要手動設置x軸刻度

 1 # 導入數據
 2 import pandas as pd
 3 import matplotlib.pyplot as plt
 4 f = open(r'C:\Users\Administrator.PC-20160806EWJL\Desktop\整理文件\boston數據簡介\data\boston.csv')
 5 data = pd.read_csv(f)
 6 
 7 # 繪制直方圖
 8 data.RAD.plot(kind = 'hist', bins = 30, color = 'steelblue', edgecolor = 'black', normed = True, label = '直方圖')
 9 # 繪制核密度圖
10 data.RAD.plot(kind = 'kde', color = 'red', label = '核密度圖')
11 # 添加x軸和y軸標簽
12 plt.xlabel('距離高速公路')
13 plt.ylabel('核密度值')
14 plt.xticks([-10,-5,0,1,2,3,4,5,6,7,8,9,20,25])    #根據分布頻率手動設置x軸的刻度
15 # 添加標題
16 plt.title('距離高速公路分布')
17 # 顯示圖例
18 plt.legend()
19 # 顯示圖形
20 plt.show()

      

 ③seaborn模塊繪制分組的直方圖

 1 # seaborn模塊繪制分組的直方圖和核密度圖
 2 # 讀入數據
 3 Titanic = pd.read_csv('titanic_train.csv')
 4 # 取出男性年齡
 5 Age_Male = Titanic.Age[Titanic.Sex == 'male']
 6 # 取出女性年齡
 7 Age_Female = Titanic.Age[Titanic.Sex == 'female']
 8 
 9 # 繪制男女乘客年齡的直方圖
10 sns.distplot(Age_Male, bins = 20, kde = False, hist_kws = {'color':'steelblue'}, label = '男性')
11 # 繪制女性年齡的直方圖
12 sns.distplot(Age_Female, bins = 20, kde = False, hist_kws = {'color':'purple'}, label = '女性')
13 plt.title('男女乘客的年齡直方圖')
14 # 顯示圖例
15 plt.legend()
16 # 顯示圖形
17 plt.show()

 ④seaborn模塊繪制核密度圖

 1 # 讀入數據
 2 Titanic = pd.read_csv('titanic_train.csv')
 3 # 繪制男女乘客年齡的核密度圖
 4 sns.distplot(Age_Male, hist = False, kde_kws = {'color':'red', 'linestyle':'-'}, 
 5              norm_hist = True, label = '男性')
 6 # 繪制女性年齡的核密度圖
 7 sns.distplot(Age_Female, hist = False, kde_kws = {'color':'black', 'linestyle':'--'}, 
 8              norm_hist = True, label = '女性')
 9 plt.title('男女乘客的年齡核密度圖')
10 # 顯示圖例
11 plt.legend()
12 # 顯示圖形
13 plt.show()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM