2017-09-23 3 views
1

나는 등고선지도의 2x3 부 그림을 가지고 있습니다. 나는 두 개의 수평 컬러 바를 원한다. 하나는 첫 번째 2 개 컬럼을위한 것이고 다른 하나는 세 번째 컬럼을위한 것이다. 각 열 (따라서 3 색 막대)에 대해서만 수행 할 수 있지만 처음 두 열에는 공유 색상 막대가 필요합니다.다른 색상 막대가있는 서브 플로트

import numpy as np 
import matplotlib.pyplot as plt 

v = np.arange(-180,181,15) 
y,x = np.meshgrid(v,v) 

p1 = 100*np.sin(x+y) 
p2 = 100*np.sin(2*x+y) 
p3 = 100*np.sin(3*x+y) 
p4 = 100*np.sin(4*x+y) 
p5 = 5*np.cos(x+5*y) 
p6 = 5*np.cos(x+6*y) 

f, ax = plt.subplots(2,3,sharex='row',sharey='col',figsize=(4,6)) 

mina = min(min(p1.reshape(625,)),min(p2.reshape(625,)),min(p3.reshape(625,)),min(p4.reshape(625,))) 
maxa = max(max(p1.reshape(625,)),max(p2.reshape(625,)),max(p3.reshape(625,)),max(p4.reshape(625,))) 
minb = min(min(p5.reshape(625,)),min(p6.reshape(625,))) 
maxb = max(max(p5.reshape(625,)),max(p6.reshape(625,))) 

ax[0,0].contourf(x,y,p1,20,vmin=mina,vmax=maxa) 
ax[0,0].set(adjustable='box-forced', aspect='equal') 
l0 = ax[1,0].contourf(x,y,p2,20,vmin=mina,vmax=maxa) 
ax[1,0].set(adjustable='box-forced', aspect='equal') 
ax[0,1].contourf(x,y,p3,20,vmin=mina,vmax=maxa) 
ax[0,1].set(adjustable='box-forced', aspect='equal') 
l1 = ax[1,1].contourf(x,y,p4,20,vmin=mina,vmax=maxa) 
ax[1,1].set(adjustable='box-forced', aspect='equal') 
ax[0,2].contourf(x,y,p5,20,vmin=minb,vmax=maxb) 
ax[0,2].set(adjustable='box-forced', aspect='equal') 
l2 = ax[1,2].contourf(x,y,p6,20,vmin=minb,vmax=maxb) 
ax[1,2].set(adjustable='box-forced', aspect='equal') 

f.colorbar(l0, ax=list(ax[:,0]),orientation='horizontal') 
f.colorbar(l1, ax=list(ax[:,1]),orientation='horizontal') 
f.colorbar(l2, ax=list(ax[:,2]),orientation='horizontal') 

plt.setp([a.get_xticklabels() for a in ax[0,:]], visible=False) 
plt.setp([a.get_yticklabels() for a in ax[:,1]], visible=False) 
plt.setp([a.get_yticklabels() for a in ax[:,2]], visible=False) 

plt.show() 

답변

2

년 Colorbar의 ax 인수는 년 Colorbar이 만들어지는 따라 축을 지정할 수 있습니다 :

여기 내 예제 코드입니다. 첫 번째 색상 막대에 대해 처음 두 열의 축을 지정하면 두 가지 색상을 따라 확장됩니다.

f.colorbar(l0, ax=list(ax[1,0:2]),orientation='horizontal', pad=0.2) 
f.colorbar(l2, ax=ax[1,2],orientation='horizontal', aspect=10, pad=0.2) 

enter image description here

관련 문제