python - 来自 for 循环的多个子图共享一个颜色条
问题描述
我对编码有点生疏,但基本上,我正在处理一个大型数据集并尝试以不同的方式对其进行可视化。我做了一个 for 循环,将多个子图变成一个 3 列 x 4 行的面板,以比较 12 个月之间的数据。
from netCDF4 import Dataset
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.basemap import Basemap
import calendar
data = Dataset("/sst.ltm.1981-2010.nc", 'r', Format='NETCDF4')
lat = data.variables['lat'][:]
lon = data.variables['lon'][:]
time = data.variables['time'][:]
sst = data.variables['sst'][:]
mp = Basemap(projection='moll', llcrnrlat=-90, urcrnrlat=90, llcrnrlon=0, urcrnrlon=360, resolution='i', lon_0=0)
x, y = np.meshgrid(lon, lat)
xx, yy = mp(x, y)
fig, axes = plt.subplots(nrows=4, ncols=3, figsize=(16,16), constrained_layout=True)
fig.suptitle('Monthly Mean SST ', fontsize=24)
for i in np.arange(12):
plt.subplot(4, 3, i+1)
colors = mp.pcolor(xx, yy, np.squeeze(sst[i,:,:]), shading='nearest', cmap='cmo.ice')
mp.drawlsmask(land_color='white', ocean_color='none', zorder=20)
mp.drawcoastlines(linewidth=0.4, color='black', zorder=25)
temp = mp.contourf(xx, yy, sst[i,:,:], levels=np.arange(-4.0, 33.0), cmap='cmo.ice')
plt.title(calendar.month_name[i+1] +' 1981-2010 ')
plt.show()
这些是我一直用于单个图的,但我不希望每个子图下都有小颜色条(即 12 个颜色条):
cb = mp.colorbar(temp,"bottom", size="5%", pad="10%")
cb.set_label('Temperature (\u00b0C)', fontsize=9)
我在其他地方看到了一些类似的例子,但似乎无法根据我的目的调整它们。有什么建议么?另外,如果有任何不稳定的代码,请随时告诉我。
TLDR:一个 for 循环生成 12 个图。我想要一个共享的单色条,位于子图下方的底部。
解决方案
推荐阅读
- html - 在单个链接 ahref 链接中,如何在移动模式下控制此包装链接之间的间距?
- java - 如何使用 Spring JPA/Hibernate 将 SINGLE 表查询的 1 列映射到 COLLECTION
- zsh - zsh zle如何防止变量CURSOR在运行时被任意修改?
- sql-server - 在 SQL Server 操作出错的情况下,在 UI 上显示用户友好的消息
- javascript - 同步检索图像分辨率
- xml - 如何从 XML 文件中获取特定信息?
- php - Laravel 在登录时加载相同的登录页面
- mysql - 如何通过字符串连接两个表?
- spring-batch - 仅在完成运行作业后如何运行 Spring 批处理作业
- angular - 使用 docker-compose Angular 替换 .scss 不会影响