如何从栅格数据生成qqplot?

时间:2016-08-20 20:06:11

标签: r

我正在尝试生成与我通过使用R对两个DEM进行差分生成的DEM相关的qqplot。我过去生成了几个qqplot,但这是我第一次尝试生成一个来自光栅。

当我尝试生成qqplot时,我会收到警告和错误,我不确定其含义(见下文)。

如何在R中为我的栅格生成qqplot图?

输入:

setwd("N:/x/y/data") 
DEM1 <-raster("DEM1") ; DEM2<-raster("DEM2")
DEM_Diff= DEM2 - DEM1
qqplot(DEM_Diff, main="Q-Q Plot:DEM_Diff")

输出:

Warning message:
In any(<S4 object of class "RasterLayer">, na.rm = FALSE) :
  Nothing to summarize if you provide a single RasterLayer; see cellStats
Error in x[order(x, na.last = na.last, decreasing = decreasing)] : 
error in evaluating the argument 'i' in selecting a method for function '[':Error in !is.na(na.last) && any(nas) : invalid 'y' type in 'x && y'

1 个答案:

答案 0 :(得分:0)

qqplot需要2个数据集作为输入(它将一个分布与另一个分布相对应)。对于单个数据集,您可以使用qqnorm来绘制正态分布。您可以通过指定存储数据的插槽或通过首先提取值来将栅格数据传递给qqnorm:

library(raster)
r=raster(volcano)
qqnorm(values(r))
# qqnorm(r@data@values) also works
# qqnorm(as.matrix(r)) also works

enter image description here

如果你实际上想要做的是绘制一个栅格与另一个栅格的分布(这个问题不明确)你可以做qqplot(values(r1), values(r2))