Take the 2-minute tour ×

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?

share|improve this question
add comment

2 Answers

up vote 1 down vote accepted

And to do this in base (using DanM's data):

share|improve this answer
add comment

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)))
share|improve this answer
add comment

Your Answer


