使用 Terra 绘图时,alpha 参数无法按预期工作

alpha argument doesn't work as expected when plotting with Terra

我正在尝试使用新的(ish)terra R 包复制我在 raster 中制作的情节,但 terra::plot 中的 alpha 参数确实如此似乎与 raster.

中的工作方式不同

我正在尝试使用 alpha 层来指示基础(彩色)层中的不确定性。下面是一些表明我的问题的简化代码。使用 raster 包,alpha 层根据每个单独像素的值更改透明度。使用 terra 时这似乎不起作用。

我想我使用的是最新版本的 terra (1.3.4),我使用的是 Mac(版本 15.5.11)。

library(terra)
library(raster)

par(mfrow=c(1,2))

plot_cols<-terrain.colors(n=5)

## raster package
raster.template<-raster(xmn=1, xmx=5, ymn=1, ymx=5, nrows=5, ncols=5)

legend.ras.comm<-raster.template
legend.ras.comm[]<-rep(c(5,4,3,2,1), 5)

legend.ras.alpha<-raster.template
legend.ras.alpha[]<-rep(c(0.9,0.7,0.45,0.2,0), 5)

plot(t(legend.ras.comm), col=plot_cols, legend=FALSE, axes=FALSE, box=FALSE, main="Raster package")
plot(t(legend.ras.comm), col="#000000", alpha=legend.ras.alpha, add=TRUE, legend=FALSE)


## terra package
raster.template<-rast(xmin=1, xmax=5, ymin=1, ymax=5, nrows=5, ncols=5)

legend.ras.comm<-raster.template
legend.ras.comm[]<-rep(c(5,4,3,2,1), 5)

legend.ras.alpha<-raster.template
legend.ras.alpha[]<-rep(c(0.9,0.7,0.45,0.2,0), 5)

plot(t(legend.ras.comm), col=plot_cols, legend=FALSE, axes=FALSE, main="Terra package")
plot(t(legend.ras.comm), col="#000000", alpha=legend.ras.alpha, add=TRUE, legend=FALSE, axes=FALSE)

如有任何帮助,我们将不胜感激。

您现在可以使用 terra 1.3-22

执行此操作

我明白了,使用你的代码:

## raster package
library(raster)
legend.ras.comm <- raster(xmn=1, xmx=5, ymn=1, ymx=5, nrows=5, ncols=5, vals=rep(c(5,4,3,2,1), 5))
legend.ras.alpha <- setValues(raster.template, rep(c(0.9,0.7,0.45,0.2,0), 5))
legend.ras.comm <- t(legend.ras.comm)
## terra package
library(terra)
legend.ter.comm <- rast(legend.ras.comm)
legend.ter.alpha <- rast(legend.ras.alpha)

par(mfrow=c(1,2))
plot_cols <- terrain.colors(n=5)

plot(legend.ras.comm, col=plot_cols, legend=FALSE, axes=FALSE, box=FALSE, main="Raster package")
plot(legend.ras.comm, col="#000000", alpha=legend.ras.alpha, add=TRUE, legend=FALSE)

plot(legend.ter.comm, col=plot_cols, legend=FALSE, axes=FALSE, main="Terra package")
plot(legend.ter.comm, col="#000000", alpha=legend.ter.alpha, add=TRUE, legend=FALSE, axes=FALSE)

对于 terra,您还可以使用影响所有颜色的单个值

plot(legend.ter.comm, col=plot_cols, alpha=.75)

或者通过颜色改变透明度。像这样:

plot_cols_alpha <- terrain.colors(n=5, alpha=seq(.75, 1, .05))
plot(legend.ter.comm, col=plot_cols_alpha)