gpt4 book ai didi

R - 如何改善 RasterVis levelplot 的颜色阴影?

转载 作者:行者123 更新时间:2023-12-04 01:04:13 26 4
gpt4 key购买 nike

我正在尝试改善水平图的颜色阴影。请看下面的代码:

# Load required packages
library(raster)
library(rasterVis)
library(viridis)

# Download file
download.file('https://www.dropbox.com/s/caya1ja5ukpih9e/raster_thiago.tif?dl=1',
destfile="~/Desktop/raster_thiago.tif", method="auto")

# Open file
r <- readAll(raster("~/Desktop/raster_thiago.tif"))

# Raster version
plot(r, col=viridis_pal(option="D")(255))

enter image description here

请注意这张 map 在用 raster::plot 绘制时看起来如何清晰。色差很平滑,看不到它们之间的任何“轮廓”。然而,遗憾的是,光栅图不像水平图那样可定制。

现在,看看这个用 RasterVis 做同样事情的尝试:

# RasterVis version
levelplot(r, margin=FALSE,
par.settings=rasterTheme(viridis_pal(option = "D")(255)))

enter image description here

您是否看到这张 map 不如上一张清晰?看起来调色板没有相同的分辨率,您可以看到颜色渐变之间的边缘不那么平滑。

有什么方法可以改善这种外观吗?我试过尝试使用 par.settingscol.regions 参数,但它们似乎都不起作用。我可能遗漏了一些东西......

最佳答案

使用 levelplot(),您还需要显式提供一个 at = 参数,一个数值向量,给出 中颜色所达到的水平之间的断点>col.regions =对应。这是一个简单的可重现示例:

library(rasterVis)
library(viridis)

## Example raster
f <- system.file("external/test.grd", package="raster")
r <- raster(f)

## Option 1: Use `at=` and `col.regions=` to set color gradient
nlev <- 200
my.at <- seq(from = cellStats(r, "min"),
to = cellStats(r, "max"),
length.out = nlev + 1)
my.cols <- viridis_pal(option = "D")(nlev)
levelplot(r, margin = FALSE,
at = my.at,
col.regions = my.cols)


## Option 2: Pass options via `par.settings = rasterTheme()`
##
## (NOTE: this only works for nlev up to 100)
nlev <- 100
my.at <- seq(cellStats(r, "min"), cellStats(r, "max"),
length.out = nlev + 1)
my.theme <- rasterTheme(viridis_pal(option = "D")(nlev))
levelplot(r, margin = FALSE,
at = my.at,
par.settings = my.theme)

要了解这是否有效,请比较使用 nlev = 10nlev = 200 绘制的图:

enter image description here

关于R - 如何改善 RasterVis levelplot 的颜色阴影?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57400132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com