首页 > 解决方案 > 在R中两个栅格之间的散点图中绘制回归线和r2?

问题描述

我有rasters两个r

> lpjENLF
class      : RasterLayer 
dimensions : 2803, 5303, 14864309  (nrow, ncol, ncell)
resolution : 0.008333333, 0.008333333  (x, y)
extent     : 60.85, 105.0417, 15.95833, 39.31667  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
source     : memory
names      : VegC 
values     : 0, 17.99169  (min, max)

> geocarbon2
class      : RasterLayer 
dimensions : 2803, 5303, 14864309  (nrow, ncol, ncell)
resolution : 0.008333333, 0.008333333  (x, y)
extent     : 60.85, 105.0417, 15.95833, 39.31667  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
source     : memory
names      : layer 
values     : 0, 26.53035  (min, max)

我通过以下方式在它们之间制作散点图:

plot(lpjENLF, geocarbon2,maxpixels=900000)

给出上面的输出 散点图

我通过以下方式找出相关性:

> cor(values(geocarbon2), values(lpjENLF), use="complete.obs", method = 'pearson')
[1] 0.6883869

如何在散点图上绘制回归线和 pearson r2 系数?

标签: rrastertiff

解决方案


要在散点图上绘制回归线和 Pearson r2 系数,可以使用以下代码

#Create 2 rasters
library(raster)

ras1 <- raster(nrow = 10, ncol = 10)
ras2 <- raster(nrow = 10, ncol = 10)
# Assign random cell values
set.seed(42)
values(ras1) <- runif(ncell(ras1))
values(ras2) <- runif(ncell(ras2))

#Create a data frame from the raster values
df <- cbind.data.frame(values(ras1), values(ras2))
names(df) <- c("ras1", "ras2")

#Plotting
library(ggpubr)

ggscatter(data = df, x = "ras1", y = "ras2", 
          add = "reg.line") + # Add regressin line
  stat_cor(aes(label = paste(..rr.label.., ..p.label.., sep = "~`,`~")), 
    label.x = 0, label.y = 1.1)

在此处输入图像描述


推荐阅读