2016-08-11 2 views
1

x 축을 공유하는 두 개의 부 그림이 있습니다. 첫 번째 것은 데이터와 fit 함수를 가지고, 두 번째는 데이터와 fit 함수의 차이입니다. 그림에서 두 서브 그림은 동일한 y 축 크기 (픽셀 단위)를가집니다. 이제 나는 데이터의 y 축과 피팅이 오류의 축보다 크게되기를 원합니다. 내 코드는 다음과 같습니다 :축 하위 집합 y 크기

import matplotlib.pyplot as plt 
f, axarr = plt.subplots(2, sharex=True,figsize=(15, 12)) 
axarr[0].scatter(x, data , facecolors='none', edgecolors='crimson') 
axarr[0].plot(x, fit, color='g',linewidth=1.5) 
axarr[0].set_ylim([18,10]) 
axarr[1].plot(x,data-fit,color='k',linewidth=width) 
axarr[1].set_ylim([-0.4,0.4]) 
yticks[-1].label1.set_visible(False) 
plt.subplots_adjust(hspace=0.) 

두 번째 플롯의 크기를 설정하는 코드가 있습니까?

답변

0

this example, using gridspec을 살펴보십시오. 나는 그것이 당신이 원하는 것과 정확히 같다고 믿습니다. 아래는 귀하의 경우에 채택 된 예입니다. 는 첫 번째 링크에 Hagnes answer에 따라 또한 x 축

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib import gridspec 

# generate some data 
x = np.arange(0, 10, 0.2) 
y = np.sin(x) 

# plot it 
fig = plt.figure(figsize=(8, 6)) 
gs = gridspec.GridSpec(2, 1, height_ratios=[3, 1]) 
ax0 = plt.subplot(gs[0]) 
ax1 = plt.subplot(gs[1], sharex=ax0) # <---- sharex=ax0 will share ax1 with ax2 
ax0.plot(x, y) 
ax1.plot(y, x) 

plt.show() 

심지어 간단한에게 공유 편집 : 모든

import numpy as np 
import matplotlib.pyplot as plt 

x = np.arange(0, 10, 0.2) 
y = np.sin(x) 

f, (a0, a1) = plt.subplots(2,1, gridspec_kw = {'height_ratios':[1, 3]}, sharex=True) # <---- sharex=True will share the xaxis between the two axes 
a0.plot(x, y) 
a1.plot(y, x) 
plt.show() 

enter image description here

+0

먼저 답변에 대한 감사합니다! 예, 저는 이것을 알고 있지만 두 플롯은 x 축을 더 이상 공유하지 않습니다. 'sharex'옵션을 얻고 플롯의 크기를 설정하는 방법이 있는지 궁금합니다. –

+0

당신은 환영합니다! x 축을 공유하는 업데이트 된 답변을 확인하십시오. 나는 또한'GridSpec'을 필요로하지 않는 더 간단한 코드 스 니펫을 추가했다. – pathoren

+0

완벽! 이게 정확히 내가 찾고 있었던거야. –