在 R 中绘制带有大栅格的散点图?
Plotting a scatterplot with large rasters in R?
library(raster)
library(sp)
library(rgdal)
library(maptools)
library(sf)
library(dplyr)
library(devtools)
library(DGVMTools)
library(Metrics)
library(hydroGOF)
library(sp)
library(grid)
library(latticeExtra)
> Y
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)
> X
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 : VegH
values : 0, 17.99169 (min, max)
我正在这两个栅格之间绘制 scatter-plot,
plot(x,Y)
但是由于像素太多,出现警告:
Warning message: In .local(x, y, ...) : plot used a sample of 0.7%
of the cells. You can use "maxpixels" to increase the sample)
将两个栅格转换为 dataframe 并绘制 scatter-plot、 后大约需要 1 小时才能出现散点图,并且它显示一个大黑块。
可重现的栅格:
r1 <- r2 <- raster(nrows=2803, ncols=5303)
values(r1) <- runif(ncell(r1))
values(r2) <- runif(ncell(r2))
我的问题是如何有效地绘制两个大型栅格数据集之间的散点图,该散点图也可以通过视觉诊断?
这么多细胞,如果你只是想检查散点图,一个样本应该是可行的吗?您可以使用 "maxpixels" 来增加样本(如您收到的警告消息所示)。例如:
X <- Y <- raster(nrows=2803, ncols=5303)
values(X) <- 10 * runif(ncell(X))
values(Y) <- values(X) * (runif(ncell(Y)) - 0.5)
plot(X, Y, maxpixels=1e5)
但是,这确实需要一段时间。
也许这是更好的方法 --- 它也需要一段时间,但可以更好地解释
plot(X, Y, maxpixels=1e5, gridded=TRUE)
library(raster)
library(sp)
library(rgdal)
library(maptools)
library(sf)
library(dplyr)
library(devtools)
library(DGVMTools)
library(Metrics)
library(hydroGOF)
library(sp)
library(grid)
library(latticeExtra)
> Y
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)
> X
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 : VegH
values : 0, 17.99169 (min, max)
我正在这两个栅格之间绘制 scatter-plot,
plot(x,Y)
但是由于像素太多,出现警告:
Warning message: In .local(x, y, ...) : plot used a sample of 0.7% of the cells. You can use "maxpixels" to increase the sample)
将两个栅格转换为 dataframe 并绘制 scatter-plot、 后大约需要 1 小时才能出现散点图,并且它显示一个大黑块。
r1 <- r2 <- raster(nrows=2803, ncols=5303)
values(r1) <- runif(ncell(r1))
values(r2) <- runif(ncell(r2))
我的问题是如何有效地绘制两个大型栅格数据集之间的散点图,该散点图也可以通过视觉诊断?
这么多细胞,如果你只是想检查散点图,一个样本应该是可行的吗?您可以使用 "maxpixels" 来增加样本(如您收到的警告消息所示)。例如:
X <- Y <- raster(nrows=2803, ncols=5303)
values(X) <- 10 * runif(ncell(X))
values(Y) <- values(X) * (runif(ncell(Y)) - 0.5)
plot(X, Y, maxpixels=1e5)
但是,这确实需要一段时间。
也许这是更好的方法 --- 它也需要一段时间,但可以更好地解释
plot(X, Y, maxpixels=1e5, gridded=TRUE)