Можно ли добавить ключ для, например, слоя sp.points
, в colorkey, сгенерированный levelplot
?Добавить ключ sp.points к levelplot colorkey
Рассмотрим следующий пример:
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) размер шрифта автоматически не масштабируется, чтобы соответствовать colorkey.
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
график, что лучший способ для преодоления проблем, я перечислил выше?
Спасибо Оскар. Возможно ли, чтобы легенда 'p2' соответствовала клавише levelplot (то есть выше или ниже этого, а не рядом с ним)? – jbaums
Вы должны попробовать аргумент 'vertical' в' mergedTrellisLegendGrob'. Его значением по умолчанию является 'FALSE' (как в этом примере). Изучая его код, я обнаружил, что с 'vertical = TRUE' эта функция использует' packGrob', чтобы перенести первую легенду сверху, а вторую - внизу. Возможно, это не совсем то, что вам нужно. Вместо этого вы можете повторно использовать последние строки этой функции, используя аргументы 'row' и' col' 'packGrob'. –