Scaled/weighted density plot

struggleBus picture struggleBus · Sep 27, 2012 · Viewed 12.2k times · Source

I want to generate a density plot of observed temperatures that is scaled by the number of events observed for each temperature data point. My data contains two columns: Temperature and Number [of observations].

Right now, I have a density plot that only incorporates the Temperature frequency according to:

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

How do I scale this density to account for the Number of observations at each temperature? For example, I want to be able to see the temperature density plot scaled to show if there are greater/fewer observations for each temperature at higher/lower temperatures.

I think I'm looking for something that could weight the temperatures?

Answer

Dan M. picture Dan M. · Sep 27, 2012

I think you can get what you want by passing a weights argument to density. Here's an example using ggplot

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