2015-06-01 105 views
2

我試圖用不同的subplots作一個數字。在這個例子中,左圖是imshow圖片,它有點太小。我怎樣才能放大ax1?爲了讓顏色條處於x軸的水平位置ax2ax3matplotlib更改sublot的大小

代碼和輸出是:

import matplotlib.pyplot as plt 
import numpy as np 


fig=plt.figure(figsize=(15,5.5)) 
ax1=plt.subplot2grid((1,3),(0,0)) 
ax2=plt.subplot2grid((1,3),(0,1)) 
ax3=plt.subplot2grid((1,3),(0,2)) 


image=np.random.random_integers(1,10,size=(100,100)) 
cax=ax1.imshow(image,interpolation="none",aspect='equal') 
cbar=fig.colorbar(cax,ax=ax1,orientation=u'horizontal') 

x=np.linspace(0,1) 
ax2.plot(x,x**2) 
ax3.plot(x,x**3) 

plt.show() 

enter image description here

回答

3

this answer得到暗示,你可以用AxisDivider調整colorbar的佈局。

import matplotlib.pyplot as plt 
import numpy as np 
from mpl_toolkits.axes_grid1 import make_axes_locatable 

fig=plt.figure(figsize=(15,5.5)) 
ax1=plt.subplot2grid((1,3),(0,0)) 
ax2=plt.subplot2grid((1,3),(0,1)) 
ax3=plt.subplot2grid((1,3),(0,2)) 

image=np.random.random_integers(1,10,size=(100,100)) 
im = ax1.imshow(image,interpolation="none",aspect='equal') 

divider = make_axes_locatable(ax1) 
cax = divider.append_axes("bottom",size="5%",pad=0.7) 
cbar=fig.colorbar(im,cax=cax,orientation=u'horizontal') 

x=np.linspace(0,1) 
ax2.plot(x,x**2) 
ax3.plot(x,x**3) 

plt.show() 

enter image description here

pad=0.7四處張望我的權利。您可能需要使用該參數以及figsize高度來完全按照您的需要進行調整。