2017-09-27 48 views
1

我的python代碼有問題。我想在一張照片上製作多張圖片,但頂部有2張圖,底部只有1張,但底部應該更寬(兩個頂部的寬度)。這裏是我的代碼:一幅圖片上的多個圖(python)

import matplotlib.pyplot as plt 
from matplotlib import cm 
from matplotlib.ticker import AutoMinorLocator 
import numpy as np 
import os 
from matplotlib.image import NonUniformImage 
from matplotlib.ticker import NullFormatter 


plt.figure(1) 

#1 
plt.subplot(221) 
plt.title('linear') 

#2 
plt.subplot(222) 
plt.title('log') 

#3 
plt.subplot(224) 
plt.title('symlog') 


plt.gca().yaxis.set_minor_formatter(NullFormatter()) 
plt.subplots_adjust(top=0.92, bottom=0.08, left=0.10, right=0.95, hspace=0.3, 
        wspace=0.35) 
plt.show() 

如果我改變第三個圖例如plt.subplot(223)它只是從左到右移動它。我怎樣才能把它擴大並放在兩個地方?

回答

1

使用subplot2grid()

import matplotlib.pyplot as plt 
from matplotlib import cm 
from matplotlib.ticker import AutoMinorLocator 
import numpy as np 
import os 
from matplotlib.image import NonUniformImage 
from matplotlib.ticker import NullFormatter 


plt.figure(1) 

#1 
plt.subplot2grid((2,2), (0,0)) 
plt.title('linear') 

#2 
plt.subplot2grid((2,2), (0,1)) 
plt.title('log') 

#3 
plt.subplot2grid((2,2), (1,0), colspan = 2) 
plt.title('symlog') 


plt.gca().yaxis.set_minor_formatter(NullFormatter()) 
plt.subplots_adjust(top=0.92, bottom=0.08, left=0.10, right=0.95, hspace=0.3, 
        wspace=0.35) 
plt.show() 

enter image description here

+0

它的工作原理,非常感謝你 – Maq92

1

您可以通過使用GridSpec定製:

from matplotlib.gridspec import GridSpec 

gs=GridSpec(2,2) 

#1 
plt.subplot(gs[0,0]) 
plt.title('linear') 

#2 
plt.subplot(gs[0,1]) 
plt.title('log') 

#3 
plt.subplot(gs[1,:]) 
plt.title('symlog')