直方圖 又回到了校園,空氣是如此的新鮮,人是如此的少......直方圖,在高中數(shù)學(xué)里好像就出現(xiàn)了。它是數(shù)值數(shù)據(jù)分布的圖形表示。在Python里,直方圖的繪制方法不止一種,先介紹常用的一種。1、用Matplotlib進(jìn)行直方圖繪制Matplotlib這個(gè)包是Python中比較強(qiáng)大的繪圖的包,可以繪制包括餅圖、條形圖、散點(diǎn)圖、折線圖、面積圖、三維圖在內(nèi)的等等等等二維三維圖形,等有時(shí)間,我再慢慢整理發(fā)布。在matplotlib.pyplot中是用hist()函數(shù)來繪制直方圖。繪制直方圖時(shí),首先要有數(shù)據(jù),hist()函數(shù)會(huì)自動(dòng)根據(jù)數(shù)據(jù)和柱子的數(shù)目去數(shù)每個(gè)柱子應(yīng)該有多少數(shù)據(jù),并繪制成圖形。import matplotlib.pyplot as plt#要使用matplotlib來繪制,必須先導(dǎo)入此包x=np.random.randint(0,100,100)#生成【0-100】之間的100個(gè)數(shù)據(jù)plt.hist(x,bins=10)#x為要統(tǒng)計(jì)的數(shù)據(jù),bins表示有多少條柱子plt.xlabel('x')#x軸標(biāo)簽plt.ylabel('y')#y軸標(biāo)簽plt.xlim(0,100)#設(shè)置x軸分布范圍hist函數(shù)各參數(shù)如下:(此藍(lán)色部分來源于網(wǎng)絡(luò))hist(x,bins=None,range=None, density=None, bottom=None, histtype='bar',, log=False, color=None, label=None, stacked=False, normed=None)x: 數(shù)據(jù)集,最終的直方圖將對(duì)數(shù)據(jù)集進(jìn)行統(tǒng)計(jì)bins: 統(tǒng)計(jì)的區(qū)間分布,即要顯示幾條柱子range: tuple, 顯示的區(qū)間,range在沒有給出bins時(shí)生效density: bool,是否歸一化,若為True則歸一化顯示histtype: 可選{'bar', 'barstacked', 'step', 'stepfilled'}之一,默認(rèn)為bar柱形,align: 可選{'left', 'mid', 'right'}之一,默認(rèn)為'mid',控制柱狀圖的水平分布,left或者right,會(huì)有部分空白區(qū)域,推薦使用默認(rèn)log: bool,默認(rèn)False,即y坐標(biāo)軸是否選擇指數(shù)刻度stacked: bool,默認(rèn)為False,是否為堆積狀圖--------------------------------代碼太多,休息一下
--------------------------------我是廣告開始的分隔線 --------------------------------我是廣告結(jié)束的分隔線 --------------------------------接著,來... import matplotlib.pyplot as pltx=np.random.randint(0,100,100)plt.hist(x,bins=10,color='r',density=True,histtype='bar',rwidth=0.5,align='right')y=np.random.randint(0,100,100)plt.hist(y,bins=10,color='b',density=True,histtype='bar',rwidth=0.5)在此圖中有三個(gè)直方圖,比較之后結(jié)果如下:import matplotlib.pyplot as pltx=np.random.randint(0,100,100)n1,bins1,patches1=plt.hist(x,bins=10,color='r',density=True,histtype='bar',rwidth=0.5,align='right')n2,bins2,patches2=plt.hist(x,bins=10,color='b',density=True,histtype='bar',rwidth=0.5)y=np.random.randint(0,100,100)n3,bins3,patches3=plt.hist(y,bins=10,color='g',density=True,histtype='bar',rwidth=0.5)我這種判斷方法感覺有點(diǎn)傻,網(wǎng)上有其他的判斷直方圖相似性等的函數(shù),有感興趣的朋友請(qǐng)自行搜索。
2、cv.calcHist()也可以畫直方圖。將在下一篇中介紹。
|