让我们假设我有两个栅格图层,一个是给定区域中给定物种的估计丰度之一,另一个是估计值的一定程度的不确定性。为了简单起见,我使用了一个非常简单的例子,产生了下面的两张图(左:丰富,右:不确定)。
library(raster)
par(mfrow = c(1,2))
par(mar = c(5.1, 4.1, 4.1, 5.1))
abund <- matrix(1:16, 4)
abund.r <- raster(abund)
plot(abund.r, col = colorRampPalette(c("red", "blue"), space = "rgb")(16))
uncert <- matrix(c(rep(0.2, 8), rep(0.8, 8)), 4, byrow = TRUE)
uncert.r <- raster(uncert)
plot(uncert.r)
在这个例子中,该地区北部的估计不如南部的估计。我正在寻找在一张地图中结合丰富和不确定性的可能性。我想通过使用与左图中相同的颜色来显示不确定性,并根据右图中的不确定性值修改网格中每个单元的透明度。因此,北部的丰度估计应该比南部的估计更加透明(不太确定)(更确定)。但是,alpha参数只接受单个值,例如:
plot(MAT1.r, col = colorRampPalette(c("red", "blue"), space = "rgb")(16),
alpha = 0.5)
当我尝试使用矢量时,只使用它的第一个元素。
我的问题:如何使用不确定性图中的信息来修改丰度图中的透明度?我们非常感谢任何有关替代方法的解决方案或建议的暗示。
答案 0 :(得分:2)
ggplot2
都是非常有资源的。考虑一下:
library(raster)
library(ggplot2)
abund.r <- raster(matrix(1:16, 4))
uncert.r <- raster(matrix(c(rep(0.2, 8), rep(0.8, 8)), 4, byrow=T))
#Layer the two rasters into one multi-band raster for easier manipulation
abu_unc <- stack(abund.r, uncert.r)
#Get cell positions in cartesian coordinates for each cell
coords <- xyFromCell(object=abu_unc, cell=1:ncell(abu_unc))
#abu_unc is a 2 layer raster where band 1==abundance and band 2==uncertainty
#Convert abu_unc () to a dataframe
abu_unc_df <- as.data.frame(abu_unc)
#Add cell coordinates
dat <- data.frame(coords, abu_unc_df)
colnames(dat) <- c("x", "y","Abundance", "Uncertainty")
#Plot dat, where the fill is abundance and transparency (alpha), is the respective uncertainty value
mymap <- ggplot(data=dat) + theme_bw() + coord_equal() +
geom_raster(aes(x=x, y=y, fill=Abundance, alpha=Uncertainty)) +
scale_alpha_continuous(range=c(0.4, 1), breaks=seq(0.4, 1, 0.1))+
scale_fill_gradient2(mid="yellow", high = "darkgreen")+
scale_x_continuous(expand=c(0.01,0.01)) +
scale_y_continuous(expand=c(0.01,0.01)) +
#General aesthetics
theme(
axis.title.x = element_text(size=12),
axis.title.y = element_text(size=12, angle=90),
axis.text = element_text(size=10),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
)
print(mymap)
#Save plot to file
ggsave(filename = "mymap.png", plot= mymap, dpi=300)
请注意使用:
scale_fill_gradient2()
自定义丰富填充scale_alpha_continous()
了解不确定性透明度您可以摆弄这两个图,让图表看起来像您认为最适合您的数据。
答案 1 :(得分:1)
使用当前版本的&#39; raster&#39;,您可以使用矢量或RasterLayer来设置透明度(alpha)
library(raster)
abund.r <- raster(matrix(1:16, 4))
uncert.r <- raster(matrix(c(rep(0.2, 8), rep(0.8, 8)), 4, byrow = TRUE))
plot(abund.r, col=colorRampPalette(c("red", "blue"), space="rgb")(16), alpha=uncert.r)