Comment étiqueter les valeurs raster dans le tracé ?
Question
Comment puis-je ajouter des valeurs de pixels au tracé ?Je peux obtenir les valeurs en utilisant click()
mais je veux qu'il apparaisse dans l'intrigue.
library(raster)
r <- raster(nrow=3, ncol=3)
r[] <- 1:ncell(r)
plot(r)
click(r)
La solution
Essayez ce qui suit, qui est basé sur des éléments bricolés à partir de la fonction renvoyée pargetMethod("click", signature="Raster")
.
myClick <- function(x, n = Inf, id = FALSE, xy = FALSE, cell = FALSE,
type = "n", show = TRUE, ...) {
i <- 0
n <- max(n, 1)
while (i < n) {
i <- i + 1
loc <- locator(1, type, ...)
xyCoords <- cbind(x = loc$x, y = loc$y)
cells <- na.omit(cellFromXY(x, xyCoords))
if (length(cells) == 0)
break
value <- extract(x, cells)
text(xyCoords, labels = value)
}
}
## Try it out
myClick(r, n=4)
Autres conseils
Si vous souhaitez afficher toutes les valeurs, vous pouvez utiliser le text
méthode:
library(raster)
r <- raster(nrow=3, ncol=3, vals=1:9)
plot(r)
text(r)
Pour un sous-ensemble, vous pouvez faire quelque chose comme :
z <- rasterToPoints(r, function(x) x > 6 )
plot(r)
text(z[,1], z[,2], z[,3])
Je sais que cette question est déjà marquée comme réponse, mais en s'appuyant sur la solution de Josh et la question complémentaire d'Eddie, voici une petite boucle for qui fait ce qu'Eddie demandait (tracer les valeurs raster sans nombres décimaux et sans utiliser click
):
r <- raster(nrow=3, ncol=3)
r[] <- runif(ncell(r))
plot(r)
for(i in 1:ncell(r)){
xycoords <- xyFromCell(r, cell = i)
value <- extract(r, xycoords)
text(xycoords, labels = round(value))
}