之前有写过science文章后处理的复现Science文章复现(Python):在机载观测中明显的强烈南大洋碳吸收
在这里是针对图细节的理解:
首先需要下载这个项目
https://github.com/NCAR/so-co2-airborne-obs
这里的环境配置会比较麻烦
conda env create --name=airborne --file=environment.yml
该图是文章中图1的a图和b图。
这里有纬度(在南半球为负的,北半球是正的)
观测的CO2减去均值(295-305)
图1. 南大洋大气CO2的观测模式
(A和B)飞机所观测的横截面图,分别为(A)ORCAS,即2016年1月至2月,和(B)ATom-1,即2016年8月。(ORCAS和ATom-1表示2个项目)颜色显示相对于各运动营地45°S南部295-305 K位温范围内的观测平均值的CO2干空气摩尔分数。等值线表示观测到的位温。有关所有运动营地的飞行轨迹和横截面图,请参见图S1和S2;有关模拟场的信息,请参见图S3和S4。 (C和D)1999-2019年夏季(DJF)和冬季(JJA)期间监测站平均观测的CO2减去南极观测站(SPO)美国国家海洋和大气管理局(NOAA)的原位记录的汇编。黑线是样条拟合,仅作为视觉指南。蓝色阴影表示我们指定的“南大洋站点”的纬度带。有关站点位置和时间覆盖范围,请参见表S1和图S5。SM包括附加的方法细节。
画图的 code
# set up canvas
fig = plt.figure() #figsize=(10, 6)) #dpi=300)
#------------------------------------
#--- ORCAS Section
#------------------------------------
ds = dsets['ds_obs_aircraft']
ax = fig.add_subplot(1, 1, 1) #axs['section_DJF']
ndx = np.where(ds.campaigns == 'ORCAS')[0][0]
cf = ax.pcolormesh(
ds.y, ds.z, ds.DCO2_binned.isel(time=ndx).squeeze(),
norm=figure_panels.divnorm,
cmap=figure_panels.cmap,
shading='nearest',
)
cs = ax.contour(
ds.LAT, ds.ALT, ds.THETA.isel(time=ndx).squeeze(),
levels=np.arange(255., 350., 5.),
linewidths=1, # 线宽1
colors='gray')
lb = plt.clabel(cs, fontsize=8, inline=True, fmt='%d')
# 绘制的等值线上添加标签
ax.set_title('Aircraft obs: CO$_2$ minus 295–305K mean (Jan-Feb 2016)')
ax.set_ylim((0, 10.5))
ax.set_xlim(-91.25, -28.75)
ax.set_ylabel('Altitude [km]');
ax.set_xlabel('Latitude [°N]')
cb = plt.colorbar(cf)
cb.set_label('$\Delta$CO$_2$ [ppm]')
util.savefig('co2-orcas-cross-section')
# 这个util应该是个人的工具包
这段代码是用于绘制南极大气CO2观测数据的飞机横截面图,具体解释如下:
- 使用 matplotlib 创建新的绘图画布。
- 选择需要绘制的数据集,此处选择了名为 “ds_obs_aircraft” 的数据集。
- 在画布上添加一个子图,使用 add_subplot() 方法。
- 找到数据集中对应该航次(ORCAS)的位置,使用 np.where() 方法。
- 使用 pcolormesh() 方法绘制二维的颜色填充图,其中 x 轴表示纬度, y 轴表示高度,颜色表示 CO2 浓度的变化。norm 参数是用于定义颜色映射的规范化器,cmap 参数是用于指定颜色映射的颜色表。
- 使用 contour() 方法添加等值线,其中 x 轴和 y 轴表示纬度和高度,线条颜色为灰色,线宽为1。levels 参数定义了等值线的值范围和间隔。
- 使用 set_title()、set_ylim()、set_xlim()、set_ylabel() 和 set_xlabel() 方法设置图的标题、y轴和x轴的标签、以及纵坐标和横坐标的范围。
- 使用 colorbar() 方法添加颜色条,cb.set_label() 方法设置颜色条的标签。
- 使用 util.savefig() 方法将图保存到文件中。