简述直方图和柱形图的区别_什么是直方图?跟柱状图有什么区别?终于有人讲明白了...
導(dǎo)讀:直方圖和柱狀圖都是數(shù)據(jù)分析中非常常見(jiàn)、常用的圖表,由于兩者外觀上看起來(lái)非常相似,也就難免造成一些混淆。此前我們?cè)凇吨鶢顖D、堆疊柱狀圖、瀑布圖有什么區(qū)別?怎樣用Python繪制?》一文中帶大家了解了柱狀圖,今天我們?cè)賮?lái)講講直方圖。
作者:屈希峰,資深Python工程師,知乎多個(gè)專(zhuān)欄作者
來(lái)源:華章科技
01 概述
直方圖(Histogram),形狀類(lèi)似柱狀圖卻有著與柱狀圖完全不同的含義。直方圖牽涉統(tǒng)計(jì)學(xué)概念,
首先要對(duì)數(shù)據(jù)進(jìn)行分組,然后統(tǒng)計(jì)每個(gè)分組內(nèi)數(shù)據(jù)元的數(shù)量。
在平面直角坐標(biāo)系中,橫軸標(biāo)出每個(gè)組的端點(diǎn),縱軸表示頻數(shù),每個(gè)矩形的高代表對(duì)應(yīng)的頻數(shù),這樣的統(tǒng)計(jì)圖稱(chēng)為頻數(shù)分布直方圖。
頻數(shù)分布直方圖需要經(jīng)過(guò)頻數(shù)乘以組距的計(jì)算過(guò)程才能得出每個(gè)分組的數(shù)量,同一個(gè)直方圖的組距是一個(gè)固定不變的值,所以如果直接用縱軸表示數(shù)量,每個(gè)矩形的高代表對(duì)應(yīng)的數(shù)據(jù)元數(shù)量,既能保持分布狀態(tài)不變,又能直觀地看出每個(gè)分組的數(shù)量,如圖2-58所示。
▲圖2-58 直方圖
通過(guò)直方圖還可以觀察和估計(jì)哪些數(shù)據(jù)比較集中,異常或者孤立的數(shù)據(jù)分布在何處。
首先,了解如下幾個(gè)基本概念。
組數(shù):
在統(tǒng)計(jì)數(shù)據(jù)時(shí),我們把數(shù)據(jù)按照不同的范圍分成幾個(gè)組,分成的組的個(gè)數(shù)稱(chēng)為組數(shù)。
組距:
每一組兩個(gè)端點(diǎn)的差。
頻數(shù):
分組內(nèi)數(shù)據(jù)元的數(shù)量除以組距。
02 實(shí)例
直方圖代碼示例如下所示。
代碼示例 2-45
1plot?=?figure(plot_width=300,?plot_height=300)
2plot.quad(top=[2,?3,?4],?bottom=[1,?2,?3],?left=[1,?2,?3],
3??????????right=[1.2,?2.5,?3.7],?color="#B3DE69")
4show(plot)
運(yùn)行結(jié)果如圖2-59所示。
▲圖2-59 代碼示例2-45運(yùn)行結(jié)果
代碼示例2-45第2行使用quad ()方法通過(guò)定義矩形的四邊邊界繪制直方圖,具體參數(shù)說(shuō)明如下。
p .quad(left, right, top, bottom, **kwargs)參數(shù)說(shuō)明。
left
(:class:`~bokeh.core.properties.NumberSpec` ) : 直方x軸左側(cè)邊界
right
(:class:`~bokeh.core.properties.NumberSpec` ) : 直方x軸右側(cè)邊界
top
(:class:`~bokeh.core.properties.NumberSpec` ) : 直方y(tǒng)軸頂部邊界
bottom
(:class:`~bokeh.core.properties.NumberSpec` ) : 直方y(tǒng)軸底部邊界
其他參數(shù)(**kwargs)說(shuō)明。
alpha
(float) : 一次性設(shè)置所有線條的透明度
color
(Color) : 一次性設(shè)置所有線條的顏色
source
(ColumnDataSource) : Bokeh特有數(shù)據(jù)格式(類(lèi)似于Pandas Dataframe)
legend
(str) : 圖元的圖例
x_range_name
(str) : x軸范圍名稱(chēng)
y_range_name
(str) : y軸范圍名稱(chēng)
level
(Enum) : 圖元渲染級(jí)別
代碼示例 2-46
1import?numpy?as?np
2import?scipy.special
3from?bokeh.layouts?import?gridplot
4#?繪圖函數(shù)
5def?make_plot(title,?hist,?edges,?x,?pdf,?cdf):
6????p?=?figure(title=title,?tools='',?background_fill_color="#fafafa")
7????p.quad(top=hist,?bottom=0,?left=edges[:-1],?right=edges[1:],
8???????????fill_color="navy",?line_color="white",?alpha=0.5)
9????p.line(x,?pdf,?line_color="#ff8888",?line_width=4,?alpha=0.7,?legend="PDF")
10????p.line(x,?cdf,?line_color="orange",?line_width=2,?alpha=0.7,?legend="CDF")
11
12????p.y_range.start?=?0
13????p.legend.location?=?"center_right"
14????p.legend.background_fill_color?=?"#fefefe"
15????p.xaxis.axis_label?=?'x'
16????p.yaxis.axis_label?=?'Pr(x)'
17????p.grid.grid_line_color="white"
18????return?p
19#?正態(tài)分布
20mu,?sigma?=?0,?0.5
21measured?=?np.random.normal(mu,?sigma,?1000)
22hist,?edges?=?np.histogram(measured,?density=True,?bins=50)
23x?=?np.linspace(-2,?2,?1000)
24#?擬合曲線
25pdf?=?1/(sigma?*?np.sqrt(2*np.pi))?*?np.exp(-(x-mu)**2?/?(2*sigma**2))
26cdf?=?(1+scipy.special.erf((x-mu)/np.sqrt(2*sigma**2)))/2
27p1?=?make_plot("Normal?Distribution?(μ=0,?σ=0.5)",?hist,?edges,?x,?pdf,?cdf)
28#?對(duì)數(shù)正態(tài)分布
29mu,?sigma?=?0,?0.5
30measured?=?np.random.lognormal(mu,?sigma,?1000)
31hist,?edges?=?np.histogram(measured,?density=True,?bins=50)
32x?=?np.linspace(0.0001,?8.0,?1000)
33pdf?=?1/(x*?sigma?*?np.sqrt(2*np.pi))?*?np.exp(-(np.log(x)-mu)**2?/?(2*sigma**2))
34cdf?=?(1+scipy.special.erf((np.log(x)-mu)/(np.sqrt(2)*sigma)))/2
35p2?=?make_plot("Log?Normal?Distribution?(μ=0,?σ=0.5)",?hist,?edges,?x,?pdf,?cdf)
36#?伽瑪分布
37k,?theta?=?7.5,?1.0
38measured?=?np.random.gamma(k,?theta,?1000)
39hist,?edges?=?np.histogram(measured,?density=True,?bins=50)
40x?=?np.linspace(0.0001,?20.0,?1000)
41pdf?=?x**(k-1)?*?np.exp(-x/theta)?/?(theta**k?*?scipy.special.gamma(k))
42cdf?=?scipy.special.gammainc(k,?x/theta)
43p3?=?make_plot("Gamma?Distribution?(k=7.5,?θ=1)",?hist,?edges,?x,?pdf,?cdf)
44#?韋伯分布
45lam,?k?=?1,?1.25
46measured?=?lam*(-np.log(np.random.uniform(0,?1,?1000)))**(1/k)
47hist,?edges?=?np.histogram(measured,?density=True,?bins=50)
48x?=?np.linspace(0.0001,?8,?1000)
49pdf?=?(k/lam)*(x/lam)**(k-1)?*?np.exp(-(x/lam)**k)
50cdf?=?1?-?np.exp(-(x/lam)**k)
51p4?=?make_plot("Weibull?Distribution?(λ=1,?k=1.25)",?hist,?edges,?x,?pdf,?cdf)
52#?顯示
53show(gridplot([p1,p2,p3,p4],?ncols=2,?plot_width=400,?plot_height=400,?toolbar_location=None))
運(yùn)行結(jié)果如圖2-60所示。
▲圖2-60 代碼示例2-46運(yùn)行結(jié)果
代碼示例2-46第5行自定義繪圖函數(shù)make_plot (title, hist, edges, x, pdf, cdf),其中參數(shù)分別為圖的標(biāo)題、直方頂部邊界、左右邊界、擬合曲線的x坐標(biāo)、方法通過(guò)定義矩形的四邊邊界,PDF為概率密度函數(shù),CDF為累積分布函數(shù)。第53行通過(guò)gridplot()方法一次展示4張圖(正態(tài)分布、對(duì)數(shù)正態(tài)分布、伽瑪分布、韋伯分布)。
關(guān)于作者:屈希峰,資深Python工程師,Bokeh領(lǐng)域的實(shí)踐者和布道者,對(duì)Bokeh有深入的研究。擅長(zhǎng)Flask、MongoDB、Sklearn等技術(shù),實(shí)踐經(jīng)驗(yàn)豐富。知乎多個(gè)專(zhuān)欄(Python中文社區(qū)、Python程序員、大數(shù)據(jù)分析挖掘)作者,專(zhuān)欄累計(jì)關(guān)注用戶(hù)十余萬(wàn)人。
本文摘編自《Python數(shù)據(jù)可視化:基于Bokeh的可視化繪圖》,經(jīng)出版方授權(quán)發(fā)布。
延伸閱讀《Python數(shù)據(jù)可視化》
推薦語(yǔ):
從圖形繪制、數(shù)據(jù)動(dòng)態(tài)展示、Web交互等維度全面講解Bokeh功能和使用,不含復(fù)雜數(shù)據(jù)處理和算法,深入淺出,適合零基礎(chǔ)入門(mén),包含大量案例。
總結(jié)
以上是生活随笔為你收集整理的简述直方图和柱形图的区别_什么是直方图?跟柱状图有什么区别?终于有人讲明白了...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 怎么退出自适应巡航_解放双脚 ACC自适
- 下一篇: java中的mybatis作用_myba