2017-09-27 29 views
1

私のPythonコードに問題があります。私は1つの画像上に複数のグラフを作成したいと思いますが、上の行に2つのグラフがあり、下の行には1つしかありませんが、下の行は幅が広い(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() 

3番目のグラフを変更すると、 plt.subplot(223)それはちょうどそれを左から右に動かす。どうすればそれを広げて2つの場所に置くことができますか?

答えて

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') 
関連する問題