前言:
Python初學(xué)者,希望各位大佬看了文章后能指出錯(cuò)誤或者給些建議!
如有雷同,純屬巧合!
= =!
環(huán)境
linux
python3
安裝
pip3 install matplotlib
matplotlib下中文亂碼解決
網(wǎng)上有多種解決辦法,我經(jīng)過(guò)嘗試選擇了可行的其中一種!
該方法在我的matplotlib學(xué)習(xí)筆記(二)中被改進(jìn)了!
Linux下:
fc-list :lang=zh #查看系統(tǒng)中中文字體存放路徑
python中:
導(dǎo)入FontProperties模塊
創(chuàng)建font實(shí)例,將本地中文字體路徑作為fname參數(shù)值傳遞給FontProperties!
然后在繪圖中需要用到中文的地方傳入?yún)?shù)fontproperties=font即可解決中文亂碼問(wèn)題聊替!注:在圖例中文亂碼問(wèn)題中需要在調(diào)用legend()方法時(shí)傳入?yún)?shù)prop=font!
測(cè)試
Matplotlib簡(jiǎn)單折線圖繪制
使用pyplot模塊下的plot(x坐標(biāo), y坐標(biāo))方法可以很方便的繪制折線圖!
簡(jiǎn)單折線圖
X坐標(biāo)和Y坐標(biāo)可以傳入多個(gè)值,利用列表或者元組來(lái)存儲(chǔ)這些值!作為參數(shù)傳入給plot方法matplotlib會(huì)根據(jù)迭代來(lái)獲取相對(duì)應(yīng)的X坐標(biāo)值和Y坐標(biāo)值并根據(jù)坐標(biāo)來(lái)連線!
設(shè)置折線粗細(xì)
使用linewidth參數(shù)可以設(shè)置折現(xiàn)的粗細(xì),linewidth可以簡(jiǎn)寫(xiě)成lw!
Matplotlib簡(jiǎn)單散點(diǎn)圖繪制
使用pyplot模塊下的scatter(x坐標(biāo), y坐標(biāo))方法可以很簡(jiǎn)單的繪制散點(diǎn)圖!
簡(jiǎn)單散點(diǎn)圖
X坐標(biāo)與Y坐標(biāo)可以是多個(gè)值,利用列表或者元組存儲(chǔ)后存入即可讓matplotlib繪制多個(gè)散點(diǎn)!
設(shè)置散點(diǎn)大小
使用s參數(shù)可以設(shè)置散點(diǎn)的大小!
設(shè)置散點(diǎn)顏色
使用c參數(shù)可以設(shè)置散點(diǎn)顏色!
參數(shù)值可以是r(red), g(grenn), b(blue), k(black)等等, 還可以使用十六進(jìn)制顏色代碼!
設(shè)置散點(diǎn)格式
使用marker參數(shù)可以設(shè)置散點(diǎn)格式
參數(shù)值有
's' -> 正方形
'p' -> 六邊形
'.' -> .
等等
可以查看官方的散點(diǎn)格式介紹:markers介紹
Matplotlib設(shè)置散點(diǎn)圖顏色映射
使用顏色映射時(shí),c參數(shù)的值需要設(shè)置成x坐標(biāo)列表繪制y坐標(biāo)列表!還要設(shè)置cmap參數(shù)值為plt.cm.Blues或者其他的顏色映射表代碼如plt.cm.Reds!
保存圖表
使用savefig(路徑, )方法可以保存圖標(biāo)到本地路徑!
去掉圖標(biāo)多余空白區(qū)域
設(shè)置bbox_inches參數(shù),參數(shù)值為"tight"可以將保存圖片的多余空白區(qū)域去掉!
隱藏坐標(biāo)軸
設(shè)置plt.axes().getxaxis().set_visible(False)可以隱藏x坐標(biāo)軸!
設(shè)置plt.axes().get_yaxis().set_visible(False)可以隱藏y坐標(biāo)軸!
固定坐標(biāo)范圍
使用plt.axis([xmin, xmax, ymin, ymax])可以固定繪制圖的坐標(biāo)范圍!
Xlim(xmin, xmax)可以固定繪制圖的x坐標(biāo)范圍,Ylim可以固定繪制圖dy坐標(biāo)范圍!
添加圖例
在調(diào)用繪制函數(shù)時(shí)如plot、scatter加上label=’注釋’參數(shù)可以很簡(jiǎn)單的為圖片添加圖例!
不過(guò)必須調(diào)用legend()方法來(lái)顯示圖例!
另外grid(True)方法可以讓圖片顯示網(wǎng)格!
圖例顯示中文
跟上面講的一樣,在legend方法中加入?yún)?shù)prop=font即可
font為FontProperties實(shí)例!
設(shè)置圖例位置
在legend中使用loc參數(shù)可以設(shè)置圖例位置
可以設(shè)置的位置參數(shù)有
創(chuàng)建子圖
子圖就是在主圖下分割出來(lái)的圖!
使用subplot()方法即可創(chuàng)建一張子圖,此方法也是用來(lái)切換子圖的!
該方法需要傳遞三個(gè)參數(shù),分別是行數(shù)廉沮、列數(shù)滞时、序號(hào)!
行數(shù):主圖行分割的次數(shù)!
列數(shù):主圖列分割的次數(shù)!
也就是說(shuō)當(dāng)創(chuàng)建一張子圖時(shí),指定的行數(shù)和列數(shù)即子圖獲得由主圖行數(shù)、列數(shù)分割到的指定行數(shù)曼玩、列數(shù)分之1!例如subplot(2, 1, 1)即這張子圖的行數(shù)為主圖行數(shù)的2分之一,列數(shù)為主圖的1分之一,序號(hào)為1!
當(dāng)行數(shù)和列數(shù)的值小于10時(shí)可以簡(jiǎn)寫(xiě)成221即2行2列序號(hào)為1!否則要寫(xiě)成(10, 10, 1)
當(dāng)創(chuàng)建完多張子圖時(shí),想要切換子圖來(lái)繪制時(shí)就需要再調(diào)用該方法參數(shù)與創(chuàng)建子圖時(shí)的參數(shù)必須一致!
當(dāng)切換了子圖后所有的繪圖操作都是針對(duì)指定子圖的!
測(cè)試
創(chuàng)建一張子圖,分割主圖行數(shù)的一半,和主圖列數(shù)的全部!
創(chuàng)建4張子圖,每張子圖的行數(shù)為主圖行數(shù)的2分之一, 列數(shù)也為主圖行數(shù)的2分之一
子圖間的切換
圖片中的參數(shù)"gs"g為顏色, s為坐標(biāo)點(diǎn)圖案(正方形圖案)!可以以這樣的方式來(lái)傳遞顏色、圖案等!參數(shù)
注:這里使用了plot()方法卻只繪制出了散點(diǎn)圖!因?yàn)樵趥鬟f參數(shù)時(shí)沒(méi)有傳遞線的圖案所導(dǎo)致的!
改進(jìn)
Matplotlib figure()方法
使用figure()方法可以用來(lái)創(chuàng)建多個(gè)主圖,這些主圖是完全獨(dú)立的圖!
不使用figure()方法時(shí)默認(rèn)有一張主圖!
使用了figure()方法后可以使用plt.get_fignums()方法來(lái)查看當(dāng)前創(chuàng)建的主圖數(shù)!
figure()方法可以傳入num參數(shù)參數(shù)值為一個(gè)整數(shù)!代表著這張主圖的序號(hào)!就像子圖一樣當(dāng)想要來(lái)回切換主圖時(shí)就可以利用這個(gè)序號(hào)來(lái)切換!每切換了一張主圖后所有繪圖操作只對(duì)當(dāng)前主圖有效!
figure()方法還可以傳入figsize參數(shù)!
參數(shù)值需要兩個(gè)整數(shù)一個(gè)為行長(zhǎng)一個(gè)為列長(zhǎng)!使用列表或者元組來(lái)傳遞!
測(cè)試
創(chuàng)建兩張主圖一張大小為10,10一張為4,4!