【R代码分析】甲烷排放绘制代码-参考论文

目录

论文-J2021-【墨西哥】Unravelling a large methane emission discrepancy in Mexico using satellite observations-Remote Sensing of Environment

相应绘图代码下载-Shen_2020_Mexico(完整R绘图代码)

Figure1:

处理和可视化墨西哥东部区域的甲烷(CH₄)排放和卫星观测数据(TROPOMI XCH₄)

墨西哥东部区域的甲烷(CH₄)排放如下图所示:

R代码解释

1. 初始化与加载依赖包

r 复制代码
rm(list=ls())
library(fields)
library(maps)
library(ncdf4)
library(abind)
library(geosphere)
library(mapdata)
library(Hmisc)
  • rm(list=ls()):清除当前工作环境中的所有变量。
  • 加载多个处理地理数据、绘图、netCDF 文件等的 R 包。

2. 设置工作目录与加载自定义函数

r 复制代码
setwd("~/Documents/CH4")
source('Function/get_geo.R')
source('Function/get_met.R')
  • 设置工作目录。
  • 加载两个自定义函数脚本,可能包含获取地理或气象数据的函数。

3. 自定义函数:plot.box

r 复制代码
plot.box=function(loc,lwd=lwd){
  arrows(x0=loc[1],y0=loc[3],x1=loc[2],code=0,col=1,lwd=lwd)
  arrows(x0=loc[1],y0=loc[4],x1=loc[2],code=0,col=1,lwd=lwd)
  arrows(x0=loc[1],y0=loc[3],y1=loc[4],code=0,col=1,lwd=lwd)
  arrows(x0=loc[2],y0=loc[3],y1=loc[4],code=0,col=1,lwd=lwd)
}
  • 这个函数绘制矩形框,用于地图上标出感兴趣区域。
  • loc 是一个4元素向量:c(xmin, xmax, ymin, ymax)

4. 自定义函数:plot.field

这是一个复杂而强大的绘图函数,用于绘制二维空间数据(如遥感图像、气体浓度场)。

该函数:

  • 使用 image.plot(来自 fields 包)绘图。
  • 支持不同类型数据(正负值、百分比、绝对值等)。
  • 支持自定义颜色、图例、坐标范围等。
  • 支持太平洋中心地图或默认地图。

主要功能包括:

  • 数据预处理(翻转纬度、设置色标范围等)
  • 自动或自定义颜色尺度
  • 添加地图边框(map()

5. 加载排放数据并修改某区域

r 复制代码
ss=load("/Users/lu/Documents/CH4_Mexico/Data/Emis_Tia/emis_per_area.Rdata")
ind11=(lon.in>=-93.0 & lon.in <=-91.7)
ind21=(lat.in>=18.6 & lat.in <=19.8)
emis_per_area[ind11,ind21]=emis_per_area[ind11,ind21]*0.1
  • 加载每平方公里 CH₄ 排放数据。
  • 将一个特定区域的排放量缩小为原来的10%(可能是数据校正或假设)。

6. 加载卫星数据:TROPOMI XCH₄

r 复制代码
ss=load("/Users/lu/Documents/CH4_Mexico/Figures/Figure 1/TROPOMI_XCH4_01x01.Rdata")
  • 加载卫星观测数据,包括 XCH₄(柱浓度甲烷),分辨率 0.1° × 0.1°。

7. 绘图:两幅图组成的图像

r 复制代码
pdf(file="CH4_posteriri_Mexico.pdf",width=6.5,height=2.5)
par(mfrow=c(1,2))
  • 输出 PDF 文件,包含 2 幅子图(1 行 2 列)。

(a) TROPOMI XCH₄ 图像

r 复制代码
ap= avg_corrected; ap[count<=1]=NA
plot.field(ap[ind1,ind2], ...)
title("(a) TROPOMI XCH4, elevation corrected", ...)
  • 使用 avg_corrected 数据(即海拔校正后的 XCH₄ 平均值)。
  • 将观测次数小于等于 1 的像元设为 NA。
  • 使用 plot.field 绘图。
  • 添加多个矩形框(plot.box)来标出研究区域。

(b) 排放数据图像

r 复制代码
ap= emis_per_area
ap[ap==0]=NA
plot.field(log10(ap[ind1,ind2]), ...)
title("(b) Prior oil/gas emissions in 2015", ...)
  • 加载排放数据,取对数(log10)以便更好地视觉呈现。
  • 零值设为 NA。
  • 添加标注(R1-R7)对应不同的感兴趣区域。

8. 绘制一个感兴趣区域(如 R5)的放大图

r 复制代码
pdf(file="R5.pdf",width=4.5,height=3)
xlim=c(-94.5,-91.9); ylim=c(17.3,18.6)
...
points(lonlat[,1],lonlat[,2],cex=0.5)
  • 画出研究区域 R5 的放大图。
  • points() 添加具体的设施或测站点位置(经纬度)。
  • 继续使用 plot.field 显示 TROPOMI 数据。

Figure2:

参考