ich zur Zeit auf einem sehr einfachen data.frame
arbeiten, mit drei Spalten:3-Variablen Heatmap ggplot2 Plotten
x
enthält x-Koordinaten eines Satzes von Punkten,
y
enthält y-Koordinaten des Satz von Punkten und
weight
enthält einen Wert für jeden Punkt;
Jetzt in ggplot2
arbeiten Ich scheinen in der Lage, Kontur Ebenen für diese Daten zu plotten, aber ich kann nicht einen Weg finden, um das Diagramm nach der Variablen weight
zu füllen. Hier ist der Code, den ich verwendet habe:
ggplot(df, aes(x,y, fill=weight)) +
geom_density_2d() +
coord_fixed(ratio = 1)
Sie können sehen, dass es überhaupt keine Füllung gibt, leider. Ich habe jetzt seit drei Tagen versucht, und ich fange an, deprimiert zu werden.
Angabe fill=weight
und/oder color = weight
in der allgemeinen ggplot
Aufruf, führte zu nichts. Ich habe versucht, verschiedene Geome (Kachel, Raster, Polygon ...) zu verwenden, immer noch nichts. Versucht, die aes
direkt in die Geom-Layer anzugeben, hat auch nicht funktioniert. Versucht, das Objekt als PPP zu konvertieren, aber ggplot
kann nicht mit ihnen umgehen, und auch die Verwendung von Base-R-Plotten hat nicht funktioniert. Ich habe ehrlich gesagt keine Ahnung von was falsch ist! Ich Anbringen der ersten 10 Punkte Daten, die auf einem unregelmäßigen Gitter beabstandet ist:
x = c(-0.13397460,-0.31698730,-0.13397460,0.13397460,-0.28867513,-0.13397460,-0.31698730,-0.13397460,-0.28867513,-0.26794919)
y = c(-0.5000000,-0.6830127,-0.5000000,-0.2320508,-0.6547005,-0.5000000,-0.6830127,-0.5000000,-0.6547005,0.0000000)
weight = c(4.799250e-01,5.500250e-01,4.799250e-01,-2.130287e+12,5.798250e-01,4.799250e-01,5.500250e-01,4.799250e-01,5.798250e-01,6.618956e-01)
Jede beraten? Der gewünschte Ausgang würde etwas in diese Richtung sein:
Vielen Dank im Voraus.
Es klingt wie Sie eine Dichteplot missbräuchlich. Dichte-Plots sollen die zugrundeliegenden Wahrscheinlichkeitsdichtefunktionen schätzen (eine Funktion, die sich über den Probenraum in 1 integriert). Vielleicht klingt es so, als ob Sie eine Art Interpolation wünschen, um Funktionswerte über eine Oberfläche zu verteilen. In diesem Fall müssten Sie jedoch eine Form der statistischen Modellierung für die Interpolation wählen. – MrFlick
Haben Sie versucht, die Funktion 'filled.contour' zu betrachten? Sie müssten zuerst Ihre Daten mit etwas wie 'library (akima)' 'int.ds <- interp (df $ x, df $ y, df $ gewicht, duplikat =" strip ")' interpolieren. Dann könntest du etwas in der Art von 'fill.contour (int.ds)' tun –