2014-12-11 5 views
4

matplotlib에서 전체 그림 제목 세트와 각 개별 플롯의 제목 세트 외에 서브 도표의 각 행에 별도의 제목을 설정할 수 있습니까? 아래 그림의 주황색 텍스트와 일치합니다. enter image description herematplotlib 서브 플레이트의 행 제목

그렇지 않은 경우 어떻게이 문제를 해결할 수 있습니까? 빈 서브 그래프를 별도의 열로 만들고 오렌지색 텍스트로 채 웁니다.

text() 또는 annotate()을 사용하여 각 단일 제목을 수동으로 배치 할 수는 있지만 일반적으로 많은 조정이 필요하며 많은 하위 그림이 있다는 것을 알고 있습니다. 더 부드러운 솔루션이 있습니까?

답변

7

아이디어는 세 개의 "큰 하위 그림"을 만들어 각각에 제목을 지정하고 보이지 않게 만드는 것입니다. 그것의 꼭대기에 당신은 작은 subplots의 매트릭스를 만들 수 있습니다.

이 솔루션은 실제로 배경 서브 플로트를 제거하는 데 더 많은주의를 기울 였지만, this post을 전적으로 기반으로합니다.

import matplotlib.pyplot as plt 

fig, big_axes = plt.subplots(figsize=(15.0, 15.0) , nrows=3, ncols=1, sharey=True) 

for row, big_ax in enumerate(big_axes, start=1): 
    big_ax.set_title("Subplot row %s \n" % row, fontsize=16) 

    # Turn off axis lines and ticks of the big subplot 
    # obs alpha is 0 in RGBA string! 
    big_ax.tick_params(labelcolor=(1.,1.,1., 0.0), top='off', bottom='off', left='off', right='off') 
    # removes the white frame 
    big_ax._frameon = False 


for i in range(1,10): 
    ax = fig.add_subplot(3,3,i) 
    ax.set_title('Plot title ' + str(i)) 

fig.set_facecolor('w') 
plt.tight_layout() 
plt.show() 
+0

그래

enter image description here

, 나는 그 답을 보았다하지만 성가신 조금 숨겨진 큰 줄거리 모든 시간을 추가해야하는 거라고 느꼈다. 또한 렌더링이나 파일 크기에 영향을 미치는지 확실하지 않습니다. 그러나 당신의 대답을 보는 것, 나는 그것이 너무 복잡하지 않다는 것을 짐작한다. 플롯 제목을 포함하고 두 가지 레벨의 제목에 대해 플롯간에 적절한 수직 간격을 만들기 위해 몇 가지 편집을 제안했습니다. –

+0

이것은 좋지만 sharex 및 sharey 옵션을 손상시킵니다. – marscher