将 sp.points 键添加到 levelplot colorkey
Add sp.points key to levelplot colorkey
是否可以将 sp.points
图层的键添加到 levelplot
生成的色键?
举个例子:
library(rasterVis)
library(latticeExtra)
library(sp)
r <- as.factor(raster(matrix(rbinom(100, 1, 0.5), 10)))
levels(r)[[1]] <- data.frame(ID=0:1, z=c('a', 'b'))
p <- SpatialPoints(matrix(runif(20), 10))
levelplot(r, margin=list(draw=FALSE), scales=list(draw=FALSE),
col.regions=c('white', 'gray90')) +
latticeExtra::layer(sp.points(p, pch=20, col=1))
我想在现有颜色键下方为点添加一个键条目。
一个笨拙的解决方案是按如下方式向 levelplot
调用添加一个键,调整 x
和 y
值直到它位于所需位置,但是 (1) 发现正确的 x
和 y
值很痛苦,需要交互,(2) 正确的填充不会调整大小以适应键,(3) 字体大小不会自动缩放以保持一致使用颜色键。
k <- list(x = 1.02, y = 0.4, corner = c(0, 0), points=list(pch=20, col=1),
text=list('foo', cex=0.9))
levelplot(r, margin=list(draw=FALSE), scales=list(draw=FALSE),
col.regions=c('white', 'gray90'), key=k) +
latticeExtra::layer(sp.points(p, pch=20, col=1))
假设我需要坚持使用 lattice
图形,克服上面列出的问题的最佳方法是什么?
虽然不能解决您提出的所有问题,但也许latticeExtra::mergedTrellisLegendGrob
功能对您有用:
p1 <- levelplot(r, scales=list(draw=FALSE),
col.regions=c('white', 'gray90'))
myPoints <- SpatialPoints(matrix(runif(20), 10))
p2 <- spplot(myPoints, pch=20)
## Merge graphics
p <- p1 + p2
## Merge legends
l1 <- p1$legend$right
l2 <- p2$legend$bottom
ll <- mergedTrellisLegendGrob(l1, l2)
p$legend$right$fun <- ll
p
是否可以将 sp.points
图层的键添加到 levelplot
生成的色键?
举个例子:
library(rasterVis)
library(latticeExtra)
library(sp)
r <- as.factor(raster(matrix(rbinom(100, 1, 0.5), 10)))
levels(r)[[1]] <- data.frame(ID=0:1, z=c('a', 'b'))
p <- SpatialPoints(matrix(runif(20), 10))
levelplot(r, margin=list(draw=FALSE), scales=list(draw=FALSE),
col.regions=c('white', 'gray90')) +
latticeExtra::layer(sp.points(p, pch=20, col=1))
我想在现有颜色键下方为点添加一个键条目。
一个笨拙的解决方案是按如下方式向 levelplot
调用添加一个键,调整 x
和 y
值直到它位于所需位置,但是 (1) 发现正确的 x
和 y
值很痛苦,需要交互,(2) 正确的填充不会调整大小以适应键,(3) 字体大小不会自动缩放以保持一致使用颜色键。
k <- list(x = 1.02, y = 0.4, corner = c(0, 0), points=list(pch=20, col=1),
text=list('foo', cex=0.9))
levelplot(r, margin=list(draw=FALSE), scales=list(draw=FALSE),
col.regions=c('white', 'gray90'), key=k) +
latticeExtra::layer(sp.points(p, pch=20, col=1))
假设我需要坚持使用 lattice
图形,克服上面列出的问题的最佳方法是什么?
虽然不能解决您提出的所有问题,但也许latticeExtra::mergedTrellisLegendGrob
功能对您有用:
p1 <- levelplot(r, scales=list(draw=FALSE),
col.regions=c('white', 'gray90'))
myPoints <- SpatialPoints(matrix(runif(20), 10))
p2 <- spplot(myPoints, pch=20)
## Merge graphics
p <- p1 + p2
## Merge legends
l1 <- p1$legend$right
l2 <- p2$legend$bottom
ll <- mergedTrellisLegendGrob(l1, l2)
p$legend$right$fun <- ll
p