Frage

Wie kann ich dem Diagramm Pixelwerte hinzufügen?Ich kann die Werte erhalten, indem ich verwende click() aber ich möchte, dass es in der Handlung erscheint.

library(raster)
r <- raster(nrow=3, ncol=3)
r[] <- 1:ncell(r)
plot(r)
click(r) 

enter image description here

War es hilfreich?

Lösung

Probieren Sie Folgendes aus, das auf Teilen basiert, die aus der von zurückgegebenen Funktion zusammengesetzt wurdengetMethod("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)

Andere Tipps

Wenn Sie alle Werte anzeigen möchten, können Sie die verwenden text Methode:

library(raster)
r <- raster(nrow=3, ncol=3, vals=1:9)
plot(r)
text(r)

Für eine Teilmenge können Sie Folgendes tun:

z <- rasterToPoints(r, function(x) x > 6 )
plot(r)
text(z[,1], z[,2], z[,3])

Ich weiß, dass diese Frage bereits als beantwortet markiert ist, aber aufbauend auf Joshs Lösung und Eddies Folgefrage ist hier eine kleine For-Schleife, die das tut, was Eddie verlangt hat (Rasterwerte ohne Dezimalzahlen und ohne Verwendung zeichnen). 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))
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top