我想在 ggplot/ggplot2 绘制的地图中使用>>georeferenced raster image<< (tif-file)的原件colortable
作为彩色比例尺。
由于没有找到更简单的解决方案,我从加载的光栅图像(对象)的 - 属性访问colortable
-slot,如下所示:legend
raster1
raster1 <- raster(paste(workingDir, "/HUEK200_Durchlaessigkeit001_proj001.tif", sep="", collapse=""))
raster1.pts <- rasterToPoints(raster1)
raster1.df <- data.frame(raster1.pts)
colTab <- attr(raster1, "legend")@colortable
好的,到目前为止一切顺利。现在我只需要将colortable
彩色比例应用于我现有的情节:
(ggplot(data=raster1.df)
+ geom_tile(aes(x, y, fill=raster1.df[[3]]))
+ scale_fill_gradientn(values=1:length(colTab), colours=colTab, guide=FALSE)
+ coord_fixed(ratio=1)
)
不幸的是,这并没有按预期工作。生成的图像除了白色和典型的 ggplot-grey 之外没有显示任何颜色,通常在没有定义自定义值时出现。目前,我有点不知道这里到底出了什么问题。我假设存储在其中的基础波段值raster1.df[[3]]
是颜色表的索引。这可能是错误的。如果是错误的,那么波段值如何与colortable
? 即使我的假设是正确的:我给出的参数scale_fill_gradientn()
应该仍然会产生更丰富多彩的情节,不是吗?我检查了唯一值是什么:
sort(unique(raster1.df[[3]]))
这输出:
[1] 0 1 2 3 4 5 6 7 8 9 10 11 12
显然,并非所有 256 个成员colortable
都被使用,这提醒我颜色并不总是需要反映底层的波段数据分布(尤其是在包含多个波段时)。
我希望,我最后的想法并没有让您对目标非常简单这一事实感到困惑。
谢谢您的帮助!