Python可视化库Matplotlib绘图入门详解
Matplotlib是Python的繪圖庫(kù),其中的pyplot包封裝了很多畫(huà)圖的函數(shù)。
Matplotlib.pyplot 包含一系列類(lèi)似 MATLAB 中繪圖函數(shù)的相關(guān)函數(shù)。每個(gè) Matplotlib.pyplot 中的函數(shù)會(huì)對(duì)當(dāng)前的圖像進(jìn)行一些修改,例如:產(chǎn)生新的圖像,在圖像中產(chǎn)生新的繪圖區(qū)域,在繪圖區(qū)域中畫(huà)線,給繪圖加上標(biāo)記,等等…… Matplotlib.pyplot 會(huì)自動(dòng)記住當(dāng)前的圖像和繪圖區(qū)域,因此這些函數(shù)會(huì)直接作用在當(dāng)前的圖像上。
繪制線圖
plt.plot() 函數(shù)可以用來(lái)繪制線型圖:
1.基本用法
指定x和y
- plt.plot(x,y)
默認(rèn)參數(shù),x 為 0~N-1
- plt.plot(y)
因此,在上面的例子中,我們沒(méi)有給定 x 的值,所以其默認(rèn)值為 [0,1,2,3]。
分別傳入 x 和 y:
2.字符參數(shù)
和 MATLAB 中類(lèi)似,我們還可以用字符來(lái)指定繪圖的格式。
表示顏色的字符參數(shù)有:
表示類(lèi)型的字符參數(shù)有:
例如我們要畫(huà)出紅色圓點(diǎn):
可以看出,有兩個(gè)點(diǎn)在圖像的邊緣,因此,我們需要改變軸的顯示范圍。
3.顯示范圍
與 MATLAB 類(lèi)似,這里可以使用 axis 函數(shù)指定坐標(biāo)軸顯示的范圍:
plt.axis([xmin, xmax, ymin, ymax])
4.傳入Numpy參數(shù)
之前我們傳給 plot 的參數(shù)都是列表,事實(shí)上,向 plot 中傳入 numpy 數(shù)組是更常用的做法。事實(shí)上,如果傳入的是列表,matplotlib 會(huì)在內(nèi)部將它轉(zhuǎn)化成數(shù)組再進(jìn)行處理:
5.子圖
figure() 函數(shù)會(huì)產(chǎn)生一個(gè)指定編號(hào)為 num 的圖:
plt.figure(num)這里,figure(1) 其實(shí)是可以省略的,因?yàn)槟J(rèn)情況下 plt 會(huì)自動(dòng)產(chǎn)生一幅圖像。
使用 subplot 可以在一副圖中生成多個(gè)子圖,其參數(shù)為:
plt.subplot(numrows, numcols, fignum)當(dāng) numrows * numcols < 10 時(shí),中間的逗號(hào)可以省略,因此 plt.subplot(211) 就相當(dāng)于 plt.subplot(2,1,1)。
繪制柱狀圖
柱狀圖(bar chart),是一種以長(zhǎng)方形的長(zhǎng)度為變量的表達(dá)圖形的統(tǒng)計(jì)報(bào)告圖,由一系列高度不等的縱向條紋表示數(shù)據(jù)分布的情況,用來(lái)比較兩個(gè)或以上的價(jià)值(不同時(shí)間或者不同條件),只有一個(gè)變量,通常利用于較小的數(shù)據(jù)集分析。柱狀圖亦可橫向排列,或用多維方式表達(dá)。
繪制每個(gè)國(guó)家或地區(qū)的電影數(shù)量的柱狀圖:
繪制散點(diǎn)圖
用兩組數(shù)據(jù)構(gòu)成多個(gè)坐標(biāo)點(diǎn),考察坐標(biāo)點(diǎn)的分布,判斷兩變量之間是否存在某種關(guān)聯(lián)或總結(jié)坐標(biāo)點(diǎn)的分布模式。
散點(diǎn)圖將序列顯示為一組點(diǎn)。值由點(diǎn)在圖表中的位置表示。類(lèi)別由圖表中的不同標(biāo)記表示。散點(diǎn)圖通常用于比較跨類(lèi)別的聚合數(shù)據(jù)。
根據(jù)電影時(shí)長(zhǎng)和電影評(píng)分繪制散點(diǎn)圖:
繪制餅圖
餅圖英文學(xué)名為Sector Graph, 有名Pie Graph。常用于統(tǒng)計(jì)學(xué)模塊。2D餅圖為圓形,手畫(huà)時(shí),常用圓規(guī)作圖。
僅排列在工作表的一列或一行中的數(shù)據(jù)可以繪制到餅圖中。餅圖顯示一個(gè)數(shù)據(jù)系列中各項(xiàng)的大小與各項(xiàng)總和的比例,數(shù)據(jù)點(diǎn)顯示為整個(gè)餅圖的百分比。
函數(shù)原型:
''' 遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助, 群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書(shū)! ''' pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6,shadow=False, labeldistance=1.1, startangle=None, radius=None)參數(shù): x (每一塊)的比例,如果sum(x) > 1會(huì)使用sum(x)歸一化
labels (每一塊)餅圖外側(cè)顯示的說(shuō)明文字
explode (每一塊)離開(kāi)中心距離
startangle 起始繪制角度,默認(rèn)圖是從x軸正方向逆時(shí)針畫(huà)起,如設(shè)定=90則從y軸正方向畫(huà)起
shadow表示是否陰影
labeldistance label繪制位置,相對(duì)于半徑的比例, 如<1則繪制在餅圖內(nèi)側(cè)
autopct 控制餅圖內(nèi)百分比設(shè)置,可以使用format字符串或者format function
'%1.1f’指小數(shù)點(diǎn)前后位數(shù)(沒(méi)有用空格補(bǔ)齊)
pctdistance 類(lèi)似于labeldistance,指定autopct的位置刻度
radius 控制餅圖半徑
返回值: 如果沒(méi)有設(shè)置autopct,返回(patches, texts)
如果設(shè)置autopct,返回(patches, texts, autotexts)
根據(jù)電影的長(zhǎng)度繪制餅圖:
繪制直方圖
直方圖(Histogram)又稱(chēng)質(zhì)量分布圖。是一種統(tǒng)計(jì)報(bào)告圖,由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況。一般用橫軸表示數(shù)據(jù)類(lèi)型,縱軸表示分布情況。
直方圖是數(shù)值數(shù)據(jù)分布的精確圖形表示。這是一個(gè)連續(xù)變量(定量變量)的概率分布****的估計(jì),并且被卡爾·皮爾遜(Karl Pearson)首先引入。它是一種條形圖。
為了構(gòu)建直方圖,第一步是將值的范圍分段,即將整個(gè)值的范圍分成一系列間隔,然后計(jì)算每個(gè)間隔中有多少值。這些值通常被指定為連續(xù)的,不重疊的變量間隔。間隔必須相鄰,并且通常是(但不是必須的)相等的大小。
直方圖也可以被歸一化以顯示“相對(duì)”頻率。然后,它顯示了屬于幾個(gè)類(lèi)別中的每個(gè)案例的比例,其高度等于1。
根據(jù)電影的評(píng)分繪制直方圖:
hist的參數(shù)非常多,但常用的就這七個(gè),只有第一個(gè)是必須的,其他是可選的。
arr: 需要計(jì)算直方圖的一維數(shù)組
bins: 直方圖的柱數(shù),可選項(xiàng),默認(rèn)為10
normed: 是否將得到的直方圖向量歸一化。默認(rèn)為0
facecolor: 直方圖顏色
edgecolor: 直方圖邊框顏色
alpha: 透明度
histtype: 直方圖類(lèi)型,‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’
返回值 :
n: 直方圖向量,是否歸一化由參數(shù)normed設(shè)定
bins: 返回各個(gè)bin的區(qū)間范圍
patches: 返回每個(gè)bin里面包含的數(shù)據(jù),是一個(gè)list
總結(jié)
以上是生活随笔為你收集整理的Python可视化库Matplotlib绘图入门详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python 爬虫面试题 102 道
- 下一篇: Python 列表List常见操作和错误