请看下面的代码:
plt.figure(figsize=(10,5))
m = Basemap(projection='cyl', resolution='c', llcrnrlat=0, urcrnrlat=90, llcrnrlon=0, urcrnrlon=360)
x, y = m(lon, lat)
scatter = m.scatter(x, y, c=theta, cmap='rainbow', norm=Normalize(vmin=math.floor(np.min(theta)/10.0)*10.0, vmax=math.ceil(np.max(theta)/10.0)*10.0), marker='o', s=20, edgecolors='none')
m.drawparallels(np.arange(0, 91, 20), labels=[1,0,0,0], linewidth=0.4)
m.drawmeridians(np.arange(0, 361, 40), labels=[0,0,0,1], linewidth=0.4)
x_special, y_special = m(lon[0], lat[0])
m.scatter(x_special, y_special, marker='*', s=50, edgecolors='black', linewidths=1.5)
x_special, y_special = m(lon[mintind], lat[mintind])
m.scatter(x_special, y_special, marker='^', s=40, c='blue')
m.drawcoastlines(linewidth=0.4)
#m.drawcountries(linewidth=0.2)
m.drawmapboundary(fill_color='white')
cax = plt.axes([0.1, 0.1, 0.65, 0.02]) # Define position and size of colorbar
cbar = plt.colorbar(scatter, cax=cax, orientation='horizontal')
cbar.set_label('Theta')
plt.title(date.strftime('%y%m%d%H'), fontsize=12)
#--------------------------------------------------------------------------------
save_path = os.path.join('/', *trajfile.split('/')[:-1], 'fig_' + date.strftime('%y%m%d%H') + '.png')
plt.savefig(save_path, bbox_inches='tight', dpi=300)
plt.close()
在输出图中(参考,见底部),我的标题只显示在颜色条的上方,而在Map的下方。为什么?
实际上我不明白python中plot的逻辑。比如,我不知道为什么在plot中没有显式地使用句柄'm',但它仍然可以被plot。
1条答案
按热度按时间siotufzp1#
plt.title
将向最后一个活动matplotlib.Axes
示例添加标题。在本例中,您为colorbar(cax
)创建了一个Axes
示例,然后添加标题,因此标题将添加到该Axes
示例。一个选择是将
plt.title
移动到创建颜色条的上方,例如在代码中将其放在m.drawmapboundary()
之后。另一种选择是显式地将标题添加到
Basemap
示例(m
)正在绘制的Axes
上。类似于:应该在这里工作。