plt.figure() 和plt.subplot() 的用法


一、plt.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True) 

方便連續畫幾個圖片

參數說明:

1.num:圖像編碼或者名稱,數字是編碼,字符串是名稱

2.figsize:寬和高,單位是英尺

3.dpi:指定繪圖對象的分辨率,即每英寸多少個像素,缺省值為80 

4.facecolor:背景顏色

5.edgecolor:邊框顏色

6.frameon:是否顯示邊框

例子:

import warnings
warnings.filterwarnings('ignore')

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import scipy.stats as st
Train_data =pd.read_csv('F:\\python\\天池_二手車交易價格預測\\used_car_train_20200313.csv',sep=' ')
y = Train_data['price']
plt.figure(1); plt.title('Johnson SU')
sns.distplot(y, kde=False, fit=st.johnsonsu)
plt.figure(2); plt.title('Normal')
sns.distplot(y, kde=False, fit=st.norm)
plt.figure(3); plt.title('Log Normal')
sns.distplot(y, kde=False, fit=st.lognorm)

結果就可以一下子跑幾個圖片了

 

 

 

 二、plt.subplots(nrows,ncols,sharex,sharey,subplot_kw,**fig_kw)

subplot可以規划figure划分為n個子圖,但每條subplot命令只會創建一個子圖

參數說明:

1.nrows:行數

2.ncols:列數

3.sharex:和誰共享x軸

4.sharey:和誰共享y軸

5.subplot_kw:關鍵字字典

6.**fig_kw:其他關鍵字

plt.subplot(ijn)形式,其中ij是行列數,n是第幾個圖,比如(221)則是一個有四個圖,該圖位於第一個

#1.plt.subplot(ijn)形式,其中ij是行列數,n是第幾個圖,比如(221)則是一個有四個圖,該圖位於第一個

import numpy as np  
import matplotlib.pyplot as plt  
x = np.arange(0, 100)  
#作圖1
plt.subplot(221)  
plt.plot(x, x)  
#作圖2
plt.subplot(222)  
plt.plot(x, -x)  
 #作圖3
plt.subplot(223)  
plt.plot(x, x ** 2)  
plt.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
#作圖4
plt.subplot(224)  
plt.plot(x, np.log(x))  
plt.show()  


#又或者是這樣
import numpy as np  
import matplotlib.pyplot as plt  
x = np.arange(0, 100)  
#作圖1
plt.subplot(331)  
plt.plot(x, x)  
#作圖2
plt.subplot(332)  
plt.plot(x, -x)  
 #作圖3
plt.subplot(333)  
plt.plot(x, x ** 2)  
plt.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)

fig,axes=plt.subplots(n,n)

#2.fig,axes=plt.subplots(n,n)
import numpy as np  
import matplotlib.pyplot as plt

x = np.arange(0, 100)  
#划分子圖
fig,axes=plt.subplots(2,2)
ax1=axes[0,0]
ax2=axes[0,1]
ax3=axes[1,0]
ax4=axes[1,1]


#作圖1
ax1.plot(x, x)  
#作圖2
ax2.plot(x, -x)
 #作圖3
ax3.plot(x, x ** 2)
ax3.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
#作圖4
ax4.plot(x, np.log(x))  
plt.show() 

fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, figsize=(10, 10))

還可以是這種

import numpy as np  
import matplotlib.pyplot as plt

x = np.arange(0, 100)  
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, figsize=(10, 10))
#作圖1
ax1.plot(x, x)  
#作圖2
ax2.plot(x, -x)
 #作圖3
ax3.plot(x, x ** 2)
ax3.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
#作圖4
ax4.plot(x, np.log(x))  
plt.show() 

 

#或者是這種:用sns中的ax=ax1
import numpy as np  
import matplotlib.pyplot as plt
import seaborn as sns
x = np.arange(0, 100)  
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, figsize=(10, 10))

#作圖1
sns.regplot(x, x,ax=ax1)  
#作圖2
sns.regplot(x, -x,ax=ax2)
 #作圖3
sns.regplot(x, x ** 2,ax=ax3);
#作圖4
sns.regplot(x, np.log(x),ax=ax4)  
plt.show() 

 

使用for循環畫圖

#還是使用前面的Train_data,實現對v_的字段畫條形圖
n_cols=[i for i in Train_data.columns if i[:2]== 'v_']
n_cols=['v_0','v_1','v2'] #簡單跑一下算了
for i ,col in enumerate(n_cols): plt.subplot(3,1,i+1) sns.barplot(x=col,y='price',data=Train_data) plt.title(('%s') % col)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM