2016-04-13 35 views
2

3x3 ızgarada her biri bir alt başlık olan bir dizi 9 alt yazı var. Her satır için bir başlık eklemek istiyorum. Bunu yapmak için suptitle kullanmayı düşündüm. Sorun şu ki, 3 altyazı kullanırsam üzerine yazılıyormuş gibi görünür ve sadece sonuncusu gösterilir.Alt başlıklar içeren çoklu başlıklar (suptitle)

fig, axes = plt.subplots(3,3,sharex='col', sharey='row') 

for j in range(9): 
    axes.flat[j].set_title('plot '+str(j)) 

plt1 = fig.suptitle("row 1",x=0.6,y=1.8,fontsize=18) 
plt2 = fig.suptitle("row 2",x=0.6,y=1.2,fontsize=18) 
plt3 = fig.suptitle("row 3",x=0.6,y=0.7,fontsize=18) 
fig.subplots_adjust(right=1.1,top=1.6) 

enter image description here

+0

Neden sadece 'eksen 1, 4 set_title', 7 (' j% 3 == 1 Aşağıdaki örnek kod uyarlanmıştır Kontrol ') ve kalanını temizle? – wflynny

+0

Hala her altpip için bir başlığa ve artı – Alessandro

+0

için bir başlığa ihtiyacım olduğu için, sadece şekil başına bir "altyazı" alabilirsiniz. Satır başlıkları – tom

cevap

3

Başlıklar ve etiketler ile tamircilik olabilir:

İşte benim temel kodudur.

import matplotlib.pyplot as plt 

fig, axes = plt.subplots(3,3,sharex='col', sharey='row') 

counter = 0 
for j in range(9): 
    if j in [0,3,6]: 
     axes.flat[j].set_ylabel('Row '+str(counter), rotation=0, size='large',labelpad=40) 
     axes.flat[j].set_title('plot '+str(j)) 
     counter = counter + 1 
    if j in [0,1,2]: 
     axes.flat[j].set_title('Column '+str(j)+'\n\nplot '+str(j)) 
    else: 
     axes.flat[j].set_title('plot '+str(j)) 

plt.show() 

sonuçlanır:

Row and Columns titles

+0

ile gitmek zorunda kalacağım Bu benim başlık uzunluğu verilen oldukça iyi bir düzeltme değil – Alessandro

+0

@ Alessandro Sen etiketler yazı boyutunu boyutunu yönetmek için daha iyi saklanan bir şey. Bu yöntemle ilgili büyük sorun, örneğin Sütunlar ve Başlıklar için farklı biçimler vermek istiyorsanız. – armatita

+0

Maalesef alt sitelerim bir ylabel içermiyor. Başka bir geçici çözüm aramak için buraya benzer bir soru gönderdim (https://stackoverflow.com/questions/47777296). –

İlgili konular