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) 

enter image description here

Était-ce utile?

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))
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top