2017-09-27 107 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')