Matplotlib的能把許多張繪畫到了一個(gè)控制界面,這便制定到控制面板切分為一個(gè)個(gè)子圖,接下來(lái)本文關(guān)鍵為大家介紹了關(guān)于調(diào)整Matplotlib子圖尺寸的資料,原文中根據(jù)案例編碼推薦的十分詳盡,需用的小伙伴可以參考一下。
前不久就遇到這種情況,始終忘記了寫,今夜夜深人靜時(shí)匯總這波~
難題
我堅(jiān)信,看見(jiàn)這篇文章博主得人,你一定早已會(huì)用Matplotlib中的pyplot繪圖。
比如像這類圖
你也應(yīng)該會(huì)調(diào)整單個(gè)圖的大小了,就是使用如下語(yǔ)句控制單個(gè)圖形figure的大小,比如我這里設(shè)的8*6的。
fig3=plt.figure(figsize=(8,6))
但隨著繼續(xù)深入的學(xué)習(xí),有時(shí)我們很有必要將兩個(gè)圖畫在一起,來(lái)做對(duì)比,所以你也應(yīng)該會(huì)在一個(gè)畫布上畫多個(gè)子圖了。比如下圖
即是通過(guò)subplot實(shí)現(xiàn)
#展示一下數(shù)據(jù) fig=plt.figure(figsize=(15,7)) fig1=plt.subplot(231) plt.scatter(data.loc[:,'Avg.Area Income'],data.loc[:,'Price']) plt.title('Income VS Price') fig2=plt.subplot(232) plt.scatter(data.loc[:,'Avg.Area House Age'],data.loc[:,'Price']) plt.title('Age VS Price') fig3=plt.subplot(233) plt.scatter(data.loc[:,'Avg.Area Number of Rooms'],data.loc[:,'Price']) plt.title('Number VS Price') fig4=plt.subplot(234) plt.scatter(data.loc[:,'Area Population'],data.loc[:,'Price']) plt.title('Population VS Price') fig5=plt.subplot(235) plt.scatter(data.loc[:,'size'],data.loc[:,'Price']) plt.title('size VS Price') plt.show()
目前為止圖好像沒(méi)有問(wèn)題,那問(wèn)題在哪呢?就是在子圖比較少的時(shí)候,整個(gè)圖可能會(huì)變形,出現(xiàn)下圖情況。
這顯然不是我們期望的,我們希望他不要拉長(zhǎng)。但是貌似直接通過(guò)subplot畫出的子圖無(wú)法更改大小,網(wǎng)上給的一些方案也比較麻煩。
簡(jiǎn)便的解決方法
把這兩個(gè)子圖畫在同一個(gè)畫布里,這樣即是子圖無(wú)法改變,但是外面的畫布大小可以改變,子圖就可以根據(jù)外面畫布大小自適應(yīng)的顯示了。
對(duì)于該圖
其原始代碼為
fig6=plt.subplot(121) label0=plt.scatter(X.loc[:,'V1'][y_corrected==0],X.loc[:,'V2'][y_corrected==0]) label1=plt.scatter(X.loc[:,'V1'][y_corrected==1],X.loc[:,'V2'][y_corrected==1]) label2=plt.scatter(X.loc[:,'V1'][y_corrected==2],X.loc[:,'V2'][y_corrected==2]) plt.title("corrected data") plt.xlabel('V1') plt.ylabel('V2') plt.legend((label0,label1,label2),('label0','label1','label2')) plt.scatter(centers[:,0],centers[:,1]) fig7=plt.subplot(122) label0=plt.scatter(X.loc[:,'V1'][y==0],X.loc[:,'V2'][y==0]) label1=plt.scatter(X.loc[:,'V1'][y==1],X.loc[:,'V2'][y==1]) label2=plt.scatter(X.loc[:,'V1'][y==2],X.loc[:,'V2'][y==2]) plt.title("labled data") plt.xlabel('V1') plt.ylabel('V2') plt.legend((label0,label1,label2),('label0','label1','label2')) plt.scatter(centers[:,0],centers[:,1]) plt.show()
可以看到兩個(gè)子圖fig6和fig7都是直接使用subplot得到的,所以它變形了。
修改后應(yīng)該是這樣的:
對(duì)應(yīng)代碼:
fig=plt.figure(figsize=(11,4)) fig6=plt.subplot(121) label0=plt.scatter(X.loc[:,'V1'][y_corrected==0],X.loc[:,'V2'][y_corrected==0]) label1=plt.scatter(X.loc[:,'V1'][y_corrected==1],X.loc[:,'V2'][y_corrected==1]) label2=plt.scatter(X.loc[:,'V1'][y_corrected==2],X.loc[:,'V2'][y_corrected==2]) plt.title("corrected data") plt.xlabel('V1') plt.ylabel('V2') plt.legend((label0,label1,label2),('label0','label1','label2')) plt.scatter(centers[:,0],centers[:,1]) fig7=plt.subplot(122) label0=plt.scatter(X.loc[:,'V1'][y==0],X.loc[:,'V2'][y==0]) label1=plt.scatter(X.loc[:,'V1'][y==1],X.loc[:,'V2'][y==1]) label2=plt.scatter(X.loc[:,'V1'][y==2],X.loc[:,'V2'][y==2]) plt.title("labled data") plt.xlabel('V1') plt.ylabel('V2') plt.legend((label0,label1,label2),('label0','label1','label2')) plt.scatter(centers[:,0],centers[:,1]) plt.show()
相比原來(lái)的代碼就多了第一行的操作,定一個(gè)合適畫布的大小就可以方便動(dòng)態(tài)調(diào)整子圖了。
麻煩點(diǎn)的方法
看到網(wǎng)上是有可以自定義子圖大小的方法的,不過(guò)相比我想出來(lái)的這個(gè)方法,感覺(jué)太麻煩了。這個(gè)方法能解決我這一類問(wèn)題了,如果后面遇到需要一個(gè)子圖大一個(gè)子圖小的問(wèn)題再多帶帶記錄把。
總結(jié)
這篇文章就給大家介紹到這里了,希望可以給大家?guī)?lái)幫助。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/128713.html
此篇文章主要是給大家介紹了python圖像處理圖象的制作實(shí)例詳細(xì)說(shuō)明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發(fā)展,盡早漲薪 文章正文 事實(shí)上前邊咱們就早已運(yùn)用了圖象的制作,如: io.imshow(img) 這一行代碼的本質(zhì)是運(yùn)用matplotlib包對(duì)圖片開(kāi)展制作,制作完成后,回到一個(gè)matplotlib類型的信息。因而,我們還可以這么寫: impor...
matplotlib作為一種常見(jiàn)的可視化圖形操作軟件,在日常的生活中應(yīng)用還是比較的廣泛的,下面跟著小編的視角,帶著大家去詳細(xì)解答Python+matplotlib繪制多子圖的方法。 本文速覽 matplotlib.pyplot api繪制子圖 面向?qū)ο蠓绞嚼L制子圖 matplotlib.gridspec.GridSpec繪制子圖 任意位置添加子圖 關(guān)于pyplot和面向?qū)ο髢煞N繪圖...
摘要:直方圖的繪制也需要用到下的,只不過(guò)在繪制折線圖時(shí)我們采用的是,而繪制直方圖時(shí)我們需要采用。利用確定直方圖軸的范圍及間距,為最小值,為最大值,為間距。用繪制,為數(shù)據(jù),為直方圖的特性,可有可無(wú)。 1.直方圖的繪制也需要用到matplotlib下的pylab,只不過(guò)在繪制折線圖時(shí)我們采用的是plot(),而繪制直方圖時(shí)我們需要采用hist()。由于在繪制過(guò)程中缺少真實(shí)數(shù)據(jù),我在這里采用np....
摘要:本文作為學(xué)習(xí)過(guò)程中對(duì)一些常用知識(shí)點(diǎn)的整理,方便查找。所有繪圖操作僅對(duì)當(dāng)前圖和當(dāng)前坐標(biāo)有效。表示把圖標(biāo)分割成的網(wǎng)格。每個(gè)對(duì)象都是一個(gè)擁有自己坐標(biāo)系統(tǒng)的繪圖區(qū)域。避免比例壓縮為橢圓數(shù)據(jù)可視化入門教程繪圖核心剖析如何調(diào)整子圖的大小 本文作為學(xué)習(xí)過(guò)程中對(duì)matplotlib一些常用知識(shí)點(diǎn)的整理,方便查找。 強(qiáng)烈推薦ipython無(wú)論你工作在什么項(xiàng)目上,IPython都是值得推薦的。利用ipyt...
閱讀 1066·2023-01-14 11:38
閱讀 1062·2023-01-14 11:04
閱讀 902·2023-01-14 10:48
閱讀 2377·2023-01-14 10:34
閱讀 1147·2023-01-14 10:24
閱讀 1026·2023-01-14 10:18
閱讀 654·2023-01-14 10:09
閱讀 733·2023-01-14 10:02