Kodunuzda kolayca değiştirebileceğiniz bir şey fontsize
, başlıklar için kullanmanızdır. Ancak, sadece bunu yapmak istemediğinizi varsayacağım!
Kullanmanın bazı alternatifleri fig.subplots_adjust(top=0.85)
:
Genellikle tight_layout()
, üst üste binmemek için her şeyi iyi konumlara yerleştirmede oldukça iyi bir iş çıkarır. Nedeni tight_layout()
bu durumda yardımcı olmaz çünkü tight_layout()
fig.suptitle () dikkate almaz. GitHub'da bununla ilgili açık bir sorun var: https://github.com/matplotlib/matplotlib/issues/829 [tam bir geometri yöneticisi gerektirdiği için 2014'te kapatıldı - https://github.com/matplotlib/matplotlib adresine kaydırıldı / konular / 1109 ].
Konuyu okursanız, sorununuzu içeren bir çözüm var GridSpec
. Anahtar, kwarg'u tight_layout
kullanarak arama yaparken şeklin üstünde biraz boşluk bırakmaktır rect
. Sorununuz için kod şöyle olur:
GridSpec kullanma
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
f = np.random.random(100)
g = np.random.random(100)
fig = plt.figure(1)
gs1 = gridspec.GridSpec(1, 2)
ax_list = [fig.add_subplot(ss) for ss in gs1]
ax_list[0].plot(f)
ax_list[0].set_title('Very Long Title 1', fontsize=20)
ax_list[1].plot(g)
ax_list[1].set_title('Very Long Title 2', fontsize=20)
fig.suptitle('Long Suptitle', fontsize=24)
gs1.tight_layout(fig, rect=[0, 0.03, 1, 0.95])
plt.show()
Sonuç:
Belki GridSpec
sizin için biraz abartıyor, ya da gerçek probleminiz çok daha büyük bir tuval ya da diğer komplikasyonlarda daha fazla alt grafik içerecektir. Basit bir kesmek sadece taklit annotate()
etmek için koordinatları kullanmak ve kilitlemektir . Yine de, çıktıya bir göz attığınızda bazı daha ince ayarlamalar yapmanız gerekebilir. Bu ikinci çözüm olmadığını Not değil kullanın .'figure fraction'
suptitle
tight_layout()
Daha basit çözüm (yine de ince ayar yapılması gerekebilir)
fig = plt.figure(2)
ax1 = plt.subplot(121)
ax1.plot(f)
ax1.set_title('Very Long Title 1', fontsize=20)
ax2 = plt.subplot(122)
ax2.plot(g)
ax2.set_title('Very Long Title 2', fontsize=20)
# fig.suptitle('Long Suptitle', fontsize=24)
# Instead, do a hack by annotating the first axes with the desired
# string and set the positioning to 'figure fraction'.
fig.get_axes()[0].annotate('Long Suptitle', (0.5, 0.95),
xycoords='figure fraction', ha='center',
fontsize=24
)
plt.show()
Sonuç:
[ Python
2.7.3 (64 bit) ve matplotlib
1.2.0 kullanarak]