2012-09-27 10 views
6

Ich möchte ein Dichtediagramm der beobachteten Temperaturen erstellen, das durch die Anzahl der für jeden Temperaturdatenpunkt beobachteten Ereignisse skaliert wird. Meine Daten enthalten zwei Spalten: Temperatur und Anzahl [der Beobachtungen].Skaliertes/gewichtetes Dichtediagramm in R

Im Moment habe ich eine Dichte Plot, der nur die Temperatur Frequenz enthält nach:

plot(density(Temperature, na.rm=T), type="l", bty="n") 

Wie skaliert ich diese Dichte für die Anzahl der Beobachtungen bei jeder Temperatur zu berücksichtigen? Zum Beispiel möchte ich in der Lage sein, das Diagramm der Temperaturdichte zu skalieren, um zu zeigen, ob es für jede Temperatur bei höheren/niedrigeren Temperaturen größere/weniger Beobachtungen gibt.

Ich denke, ich suche nach etwas, das die Temperaturen gewichten könnte?

Antwort

6

verwenden und diese in der Basis zu tun (DanM Daten verwenden):

plot(density(dat$Temperature,weights=dat$Number/sum(dat$Number),na.rm=T),type='l',bty='n') 
5

Ich denke, Sie können bekommen, was Sie wollen, indem Sie ein weights Argument an density übergeben. Hier ist ein Beispiel ggplot

dat <- data.frame(Temperature = sort(runif(10)), Number = 1:10) 
ggplot(dat, aes(Temperature)) + geom_density(aes(weights=Number/sum(Number))) 
+1

__2017 Update: __ die Ästhetik wird umbenannt 'weight' ohne' s', so dass die Die Anweisung wird zu: 'ggplot (dat, aes (x = Temperatur, Gewicht = Anzahl/Summe (Anzahl))) + geom_density()'. –