我试图使用底图生成一些地理地图的子图。以下是我正在处理的代码部分:
import matplotlib.pyplot as plt
#---Some code to read in the data
# ...
#-----Get a A4 sized landscape figure
fig=plt.figure(figsize=(11.69,8.27), dpi=100)
#----2*3 Subplots-------------
for ii in range(6):
ax=fig.add_subplot(2,3,ii+1)
#---Basemap contourf of data
baseIsofill(var[ii],ax,'local')
ax.set_title('(a)',loc='left')
#plt.tight_layout()
plt.tight_layout(pad=2.0,h_pad=6.5,w_pad=4.5)
plt.show()
问题是子图布局:
tight_layout()
,子图中的图和文本不会重叠,但它们都变得太小而且没有充分利用图形空间(图1)。 / LI>
plt.tight_layout()
时,子图占据了大部分可用的图形空间,但是纬度标签开始重叠(图2)。plt.tight_layout(pad=2.0,h_pad=6.5,w_pad=4.5)
给出了期望的结果(图3)。但是当使用不同的子图布局时,需要更改参数(例如,横向A4上的3 * 2,图4,再次太小)。
在BaseIsofill()
功能中,我缩小了试图避免重叠的纬度标签的字体大小。缩小是子图布局的函数(fontsize = 7. / max(nrows,ncolns)+5)。除此之外,函数内部不会进行任何与大小相关的更改。
如果我花时间调整填充参数,我总能得到一个好的结果,但这将涉及一些试验和错误测试,并且不健壮。毕竟,对子图布局进行快速而强大的修复是tight_layout
的意义所在。所以我想知道有没有人想出解决方案?
PS:我的matplotlib版本是1.3.1。底图版本是1.0.7