2014-03-24 5 views
6

new pythonic style for shared axes square subplots in matplotlib?과 관련됩니다 (또는 후속 작업).Pyplot : 공유 축 및 서브 플로트 사이에 공백이 없음

위의 질문과 마찬가지로 서브 플로트를 하나의 축으로 공유하고자합니다. 그러나, 나는 또한 플롯 사이에 공간이 필요 없다. 이것은 내 코드의 관련 부분입니다 :

f, (ax1, ax2) = plt.subplots(1, 2, sharex=True, sharey=True) 
plt.setp(ax1, aspect=1.0, adjustable='box-forced') 
plt.setp(ax2, aspect=1.0, adjustable='box-forced') 

# Plot 1 
ax1.matshow(pixels1, interpolation="bicubic", cmap="jet") 
ax1.set_xlim((0,500)) 
ax1.set_ylim((0,500)) 

# Plot 2 
ax2.matshow(pixels2, interpolation="bicubic", cmap="jet") 
ax2.set_xlim((0,500)) 
ax2.set_ylim((0,500)) 

f.subplots_adjust(wspace=0) 

그리고 이것은 결과입니다 enter image description here

i)는 (두 plt.setp을 주석 좀 추가 흰색 테두리를 얻을 명령 경우 : enter image description here

어떻게하면 그림을 첫 번째 결과처럼 보이게 할 수 있습니까? 그러나 두 번째 결과 에서처럼 축이 만지면 어떻게됩니까?

답변

5

편집 : 당신의 결과를 얻을 수있는 가장 빠른 방법은 @Benjamin Bannier 설명 하나, 단순히

fig.subplots_adjust(wspace=0) 

대안이 2 동일한 너비/높이 비율이 그림을 만드는 것입니다 사용 (있는 그대로 당신은 두 개의 플롯을 가지고 있습니다). 그림을 문서에 포함시키고 최종 문서의 열 너비를 이미 알고있는 경우에만이 방법을 사용하는 것이 좋습니다.

Figure(figsize=(width,height))을 호출 할 때 너비와 높이를 설정하거나 plt.subplots()의 매개 변수를 인치로 설정할 수 있습니다. 예 :

fig, axes = plt.subplots(ncols=2, sharex=True, sharey=True,figsize=(8,4)) 
fig.subplots_adjust(0,0,1,1,0,0) 

스크린 샷 : @Benjamin Bannier으로 enter image description here

당신이 제로 마진이 단점으로 지적한다. 그런 다음 subplot_adjust()으로 게임을 할 수 있지만 솔루션을 단순하게 유지하려면 대칭 방식으로 공백을 만들어야합니다. 예는 fig.subplots_adjust(.1,.1,.9,.9,0,0) 일 수 있습니다.

+1

'subplots_adjust'는 필요하지 않은 축을 숨 깁니다. 패널 사이의 공간을 배타적으로 제거하는'subplots_adjust (hspace = 0)'을 제안합니다. –

+0

당신은'wspace'을 의미했습니다. 좋은 지적. – gg349

+0

Yupp, 잘못된 정신적 인 그림이있는 것 같습니다. 나는 항상이 두 가지를 섞습니다. –

관련 문제