Ich versuche, mit ggplot2 ein Konturdiagramm zu zeichnen, und es erweist sich als etwas schwieriger, als ich mir vorgestellt habe. Mit Hilfe der iris
Dataset Ich bin der Lage, dieses Grundstück zu produzieren:Konturniveaus, die variablen Ebenen in ggplot2 entsprechen
ggplot(iris, aes(x=Petal.Width, y=Petal.Length, fill=Sepal.Width)) +
stat_density2d(geom="polygon", aes(fill=..level..))
Mein Problem ist, dass ich nicht scheinen, um herauszufinden, wie kann eher auf Anzeigen- als die Dichtewerte -die rohe Sepal.Width
Werte . Hier ist, was ich versucht habe:
ggplot(iris, aes(x=Petal.Width, y=Petal.Length, z=Sepal.Width)) +
geom_tile(aes(fill=Sepal.Width))+
stat_contour(aes(colour=..level..))
Dies erzeugt eine besonders seltsame Fehlermeldung:
Warning message:
Computation failed in `stat_contour()`:
(list) object cannot be coerced to type 'double'
Ich habe auch versucht diese:
ggplot(iris, aes(x=Petal.Width, y=Petal.Length, fill=Sepal.Width)) +
stat_density2d(geom="polygon", aes(fill=Sepal.Width))
Und schließlich diese:
ggplot(iris, aes(x=Petal.Width, y=Petal.Length, fill=Sepal.Width)) +
geom_tile()
Kann jemand einen guten Weg zu Pro empfehlen ein Konturdiagramm in ggplot2 mit den Werten der Variablen selbst, die die Ebenen der Kontur erzeugen?
Vom stat_contour
Beispiel AKTUALISIERT:
# Generate data
library(reshape2) # for melt
volcano3d <- melt(volcano)
names(volcano3d) <- c("x", "y", "z")
# Basic plot
ggplot(volcano3d, aes(x, y, z = z)) +
stat_contour(geom="polygon", aes(fill=..level..))
Arbeit groß und sieht gut aus. Aber wenn ich das genau auf die Iris Beispiel gelten etwa so:
ggplot(iris, aes(x=Petal.Width, y=Petal.Length, fill=Sepal.Width)) +
stat_contour(geom="polygon", aes(fill=..level..))
erhalte ich diese Fehlermeldung:
Warning message:
Computation failed in `stat_contour()`:
(list) object cannot be coerced to type 'double'
Diese sind beide Datenrahmen mit ähnlicher Struktur, so kann ich nicht herausfinden, was anders ist zwischen den beiden verursacht dieses Problem.
'stat_countour' ein rechteckiges Gitter von Werten muss (wie im volcano3d Beispiel). Wenn Sie irreguläre Daten haben, müssen Sie ein Modell auswählen, um eine Interpolation durchzuführen, um Werte für das Raster zu berechnen, das Sie zeichnen möchten. Der 'z'-Wert, den Sie für' stat_density2d' sehen, macht wirklich nichts. Eine Dichte sagt nur die gemeinsame Dichte (~ Häufigkeit) dieser Beobachtungspaare voraus. – MrFlick