不同范围栅格图层的箱线图合并绘制技术问询
解决方法
因为四个区域的栅格空间范围不一致,无法直接堆叠,但绘制合并箱线图不需要栅格空间对齐,只需要提取每个区域的有效NO₂均值数值即可,步骤如下:
1. 提取各区域的有效数值
从每个年度均值栅格中提取大于0且非NA的数值(和你计算均值时的规则一致):
# 提取Biscay区域的有效数值 by_vals <- values(meanBY) by_vals <- by_vals[by_vals > 0 & !is.na(by_vals)] # 提取North Seca区域的有效数值 ns_vals <- values(meanNS) ns_vals <- ns_vals[ns_vals > 0 & !is.na(ns_vals)] # 提取BQPZJR区域的有效数值 bp_vals <- values(meanBP) bp_vals <- bp_vals[bp_vals > 0 & !is.na(bp_vals)] # 提取EngChan区域的有效数值 ec_vals <- values(meanEC) ec_vals <- ec_vals[ec_vals > 0 & !is.na(ec_vals)]
2. 整理为数据框
将所有数值和对应的区域标签组合成数据框,方便绘图:
no2_df <- data.frame( NO2_Concentration = c(by_vals, ns_vals, bp_vals, ec_vals), Region = rep( c("Biscay", "North Seca", "BQPZJR", "EngChan"), times = c(length(by_vals), length(ns_vals), length(bp_vals), length(ec_vals)) ) )
3. 绘制合并箱线图
用基础绘图包:
boxplot(NO2_Concentration ~ Region, data = no2_df, main = "年度平均NO₂浓度区域对比", ylab = "NO₂浓度", col = "lightgreen", las = 1)
用ggplot2(更美观的可视化):
如果没安装ggplot2先执行:install.packages("ggplot2"),然后运行:
library(ggplot2) ggplot(no2_df, aes(x = Region, y = NO2_Concentration)) + geom_boxplot(fill = "#4292c6", alpha = 0.7) + labs(title = "年度平均NO₂浓度区域对比", y = "NO₂浓度", x = "区域") + theme_bw() + theme(axis.text.x = element_text(angle = 45, hjust = 1))
这样就能在同一图表中对比四个区域的NO₂均值分布了。
内容的提问来源于stack exchange,提问作者Benjamin Van Roozendael
相关产品推荐
相关产品推荐

