程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python matplotlib.pyplot.hist()繪制直方圖的方法實例

編輯:Python

目錄

一、matplotlib.pyplot.hist()語法

二、繪制直方圖

①繪制簡單直方圖

②:各個參數繪制的直方圖

(1)histtype參數(設置樣式bar、barstacked、step、stepfilled)

(2)range參數(指定直方圖數據的上下界,默認包含繪圖數據的最大值和最小值(范圍))

(3)orientation參數 (設置直方圖的擺放位置,vertical垂直方向 horizontal水平方向,默認值:vertical垂直方向)

(4)density參數(bool值,True:將坐標軸轉化為密度刻度,默認值:None)

(5)weights參數(為每個數據點設置權重)

(6)cumulative參數(bool值,是否需要計算累計頻數或頻率,默認值:False)

(7)bottom參數(為直方圖添加基准線)

(8)align參數(設置條形邊界值的對其方式,mid、left、right,默認值:mid)

(9)rwidth參數(設置直方圖條形寬度的百分比)

(10)log參數(bool值,對繪圖數據進行log變換 默認值:False)

(11)stacked參數(bool值,當有多個數據時,是否需要將直方圖呈堆疊擺放,默認值:False水平擺放)

(12)直方圖所有參數展示:

 三、在直方圖上畫折線圖

總結

一、matplotlib.pyplot.hist()語法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)plt.hist( x,# 指定要繪制直方圖的數據 bins,# 設置長條形的數目 range,# 指定直方圖數據的上下界,默認包含繪圖數據的最大值和最小值(范圍) density=True or False, # 如果"True",將y軸轉化為密度刻度 默認為None weights,# 該參數可為每一個數據點設置權重 cumulative=True or False,# 是否需要計算累計頻數或頻率 默認值False bottom=0, # 可以為直方圖的每個條形添加基准線,默認為0 histtype={'bar', 'barstacked', 'step', 'stepfilled'} # 設置樣式 # bar柱狀形數據並排,默認值。 # barstacked在柱狀形數據重疊並排(相同的在一起) # step柱狀形顏色不填充 # stepfilled填充的線性 align='mid' or 'left' or 'right', # 設置條形邊界值的對其方式,默認為mid,除此還有'left'和'right' orientation={'vertical', 'horizontal'},# 設置直方圖的擺放方向,默認為垂直方向vertical rwidth,# 設置直方圖條形寬度的百分比 log=True or False,# 是否需要對繪圖數據進行log變換 默認值False color='r',# 設置直方圖的填充色 label, # 設置直方圖的標簽 stacked=True or False, # 當有多個數據時,是否需要將直方圖呈堆疊擺放,默認False水平擺放; facecolor,# 設置長條形顏色(和color效果一致,設置color就不用再設置facecolor) edgecolor,# 設置邊框的顏色 alpha # 設置透明度 )# 注意組距,得到滿意的展示效果# 注意y軸所代表的變量是頻數還是頻率二、繪制直方圖①繪制簡單直方圖import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)# bins設置長條形的數目plt.hist(data,bins=10)plt.show()

②:各個參數繪制的直方圖(1)histtype參數(設置樣式bar、barstacked、step、stepfilled)

1. bar:柱狀形數據並排(因為bar是默認值,可以不寫)

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10)plt.show()

 2. barstacked:在柱狀形數據重疊並排(相同的在一起)

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,histtype='barstacked')plt.show()

 3. step:柱狀形顏色不填充 

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,histtype='step')plt.show()

 4. stepfilled:生成一個默認填充的線圖

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,histtype='stepfilled')plt.show()

(2)range參數(指定直方圖數據的上下界,默認包含繪圖數據的最大值和最小值(范圍))

不想顯示數據全部范圍,只想查看數據某一個范圍內的數據。(例:下圖數據范圍為140~180之間,只想查看150~170之間的數據)

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,histtype='bar',range=(150,170))plt.show()

(3)orientation參數 (設置直方圖的擺放位置,vertical垂直方向 horizontal水平方向,默認值:vertical垂直方向)

垂直方向(默認垂直,可以不寫):

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10)plt.show()

horizontal水平方向:

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,orientation='horizontal')plt.show()

(4)density參數(bool值,True:將坐標軸轉化為密度刻度,默認值:None)

直方圖為垂直方向時,觀察y軸:

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,density=True)plt.show()

 直方圖為水平方向時,觀察x軸:

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,orientation='horizontal',density=True)plt.show()

(5)weights參數(為每個數據點設置權重)

  直方圖為垂直方向時,觀察y軸:

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,weights=data)plt.show()

  直方圖為水平方向時,觀察x軸:

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,orientation='horizontal',weights=data)plt.show()

(6)cumulative參數(bool值,是否需要計算累計頻數或頻率,默認值:False)

頻數:指事件發生的次數

頻率:指次數占總次數n的比例

頻率=頻數/n

  直方圖為垂直方向時:

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,cumulative=True)plt.show()

直方圖為水平方向時: 

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,orientation='horizontal',cumulative=True)plt.show()

(7)bottom參數(為直方圖添加基准線)

直方圖為垂直方向時,觀察y軸:

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,bottom=170)plt.show()

 直方圖為水平方向時,觀察x軸:

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,orientation='horizontal',bottom=170)plt.show()

(8)align參數(設置條形邊界值的對其方式,mid、left、right,默認值:mid)

mid(默認值可以不寫):

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10)plt.show()

 left:

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,align='left')plt.show()

 right:

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,align='right')plt.show()

(9)rwidth參數(設置直方圖條形寬度的百分比)import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,rwidth=0.5)plt.show()

(10)log參數(bool值,對繪圖數據進行log變換 默認值:False)

直方圖為垂直方向時,觀察y軸:

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,log=True)plt.show()

 直方圖為水平方向時,觀察x軸:

import matplotlib.pyplot as pltimport numpy as npdata=np.random.randint(140,180,200)plt.hist(data,bins=10,orientation='horizontal',log=True)plt.show()

(11)stacked參數(bool值,當有多個數據時,是否需要將直方圖呈堆疊擺放,默認值:False水平擺放)

stacked=False時:(水平擺放)

import matplotlib.pyplot as pltimport numpy as npx=np.random.randint(140,180,200)y=np.random.randint(140,180,200)plt.hist([x,y], bins=10)plt.show()

 stacked=True時:(堆疊擺放)

import matplotlib.pyplot as pltimport numpy as npx=np.random.randint(140,180,200)y=np.random.randint(140,180,200)plt.hist([x,y], bins=10,stacked=True)plt.show()

(12)直方圖所有參數展示:import matplotlib.pyplot as pltimport numpy as npplt.rcParams['font.sans-serif']=['FangSong']fig=plt.figure(figsize=(8,8))data=np.random.randint(140,180,200)# data數據# bins設置長條形的個數# histtype設置樣式 barstacked:在柱狀形數據重疊並排(相同的在一起)# range顯示范圍# cumulative累計頻數# align設置邊界對齊值為中心對齊# orientation設置擺放方向為horizontal水平方向# rwidth設置長條形寬度的百分比為20# color設置長條形的填充顏色為#FFB6C1# label設置直方圖的標簽# edgecolor設置長條形邊框線為#FFD700# alpha設置長條形的透明度為0.5# density=True 長條形呈水平方向:density將x軸轉換為密度刻度 長條形呈垂直方向:density將y軸轉換為密度刻度# weights=data為每個數據點設置權重# bottom設置基准線為15000# log=True是否對數據進行log轉換plt.hist(data,bins=10,histtype='barstacked',range=(140,170),cumulative=True,align='mid',orientation='horizontal',rwidth=20,color='#FFB6C1', label='數量',edgecolor='#FFD700',alpha=0.5,weights=data,bottom=10000,log=False)plt.xticks(size=20) # x軸刻度值大小plt.yticks(size=20) # y軸刻度值大小plt.title('hist',size=30) # 設置直方圖標簽plt.xlabel('x軸',size=15) # 設置x軸標簽plt.ylabel('y軸',size=20) # 設置y軸標簽plt.rcParams.update({'font.size':20}) # 修改圖例字體大小plt.legend()plt.show()

 三、在直方圖上畫折線圖import matplotlib.pyplot as pltimport numpy as npx=np.random.normal(100,15,10000)y=np.random.normal(80,15,10000)# density=True設置為密度刻度n1, bins1, patches1 = plt.hist(x, bins=50, density=True, color='#00B8B8', alpha=1)n2, bins2, patches2 = plt.hist(y, bins=50, density=True, color='r', alpha=0.2)plt.plot(bins1[:-1],n1,':',lw=3)plt.plot(bins2[:-1],n2,'--',lw=3)plt.show()

總結

到此這篇關於Python matplotlib.pyplot.hist()繪制直方圖的文章就介紹到這了,更多相關matplotlib.pyplot.hist()繪制直方圖內容請搜索軟件開發網以前的文章或繼續浏覽下面的相關文章希望大家以後多多支持軟件開發網!



  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved