Ich habe ein Modell, das mir gesagt hat, dass es eine Interaktion zwischen zwei Variablen gibt: a und b, die meine Antwortvariable signifikant beeinflusst: c. Alle drei sind fortlaufende numerische Variablen. Für Detail c ist die Änderungsrate meine Antwortvariable, b ist die Änderungsrate für meinen Prädiktor und a ist der durchschnittliche jährliche Niederschlag. Die Analyseeinheit besteht aus Pixeln in einem Raster. Mein Modell sagt mir also, dass der durchschnittliche jährliche Niederschlag ändert, wie mein Prädiktor meine Reaktion beeinflusst. Um diese Interaktion zu visualisieren, möchte ich ein Konturdiagramm/Heat Map/Level Plot mit a und b auf der x- und y-Achse und c die Farbe verwenden, um mir zu zeigen, wie sich meine Antwortvariable innerhalb des durch beschriebenen Bereichs ändert A und B. Ich kann mit einem Streudiagramm dies tun, aber es ist nicht sehr schön oder einfach zu interpretieren:Konturdiagramm oder Heatmap aus drei kontinuierlichen Variablen
qplot(b, a, colour = c) +
scale_colour_gradient(low="green", high="red") +
Wenn ich versuche, ein Konturdiagramm/Heatmap/ebenes Grundstück plotten, obwohl alles, was ich bekomme Fehler sind , leere Plots oder hässliche Plots.
geom_contour
gibt mir eine Fehlermeldung:
ggplot(data = Mod, aes(x = Rain, y = Bomas, z = Fire)) +
geom_contour()
Warning message:
Not possible to generate contour data
geom_raster
mich zunächst gibt Error: cannot allocate vector of size 81567.2 Gb
aber wenn ich meine Daten runden produziert es:
ggplot(data = df, aes(x = a, y = b, z = c)) +
geom_raster(aes(fill = c))
interpolate = TRUE
zum geom_raster
Code Hinzufügen von nur macht die Linien ein wenig verschwommen.
geom_tile
erzeugt eine leere Grafik aber mit einem Maßstab für c:
ggplot(data = df, aes(x = a, y = b, z = c)) +
geom_tile(aes(color = c))
Ich habe auch versucht stat_density2d
und Einstellung der Füllung und/oder die Farbe c verwenden, aber nur einen Fehler bekommen, und ich habe versucht, auch levelplot
im lattice
Paket mit, aber das ergibt dies:
levelplot(c ~ a * b, data = df,
aspect = "asp", contour = TRUE,
xlab = "a",
ylab = "b")
Ich vermute, die Probleme, denen ich begegne, sind, weil die Funktionen nicht eingerichtet sind, um mit kontinuierlichen x- und y-Variablen umzugehen, scheinen alle Beispiele Faktoren zu verwenden. Ich hätte gedacht, dass ich das kompensieren könnte, indem ich die Breite der Fächer ändere, aber das scheint auch nicht zu funktionieren. Gibt es eine Funktion, mit der Sie eine Heatmap mit 3 kontinuierlichen Variablen erstellen können? Oder muss ich meine a- und b-Variablen als Faktoren behandeln und manuell einen Datenrahmen mit Bins erstellen, der für meine Daten geeignet ist?
Wenn Sie für sich selbst experimentieren wollen, dann bekommen Sie ähnliche Probleme zu dem, was ich habe mit:
df<- as.data.frame(rnorm(1:1068))
df[,2] <- rnorm(1:1068)
df[,3] <- rnorm(1:1068)
names(df) <- c("a", "b", "c")
Wissen Sie, wie diese könnte erweitert werden, so dass die Farben in Ihrer ersten Figur, die die ganze Handlung abgedeckt? – James
Sie können den Mittelwert in einer Bin ohne Beobachtungen nicht berechnen. – Axeman