stat_density(mapping = NULL, data = NULL, geom = "area",
position = "stack", adjust = 1, kernel = "gaussian",
trim = FALSE, na.rm = FALSE, ...)
density
for detailsdensity
for detailsTRUE
, the default, densities are
trimmed to the actually range of the data. If
FALSE
, they are extended by the default 3
bandwidths (as specified by the cut
parameter to
FALSE
(the default), removes
missing values with a warning. If TRUE
silently
removes missing values.aes
or aes_string
. Only
needs to be set at the layer level if you are overriding
the plot defaults.# Adjust parameters m + geom_density(kernel = "rectangular") m + geom_density(kernel = "biweight") m + geom_density(kernel = "epanechnikov") m + geom_density(adjust=1/5) # Very rough m + geom_density(adjust=5) # Very smooth
# Adjust aesthetics m + geom_density(aes(fill=factor(Drama)), size=2) # Scale so peaks have same height: m + geom_density(aes(fill=factor(Drama), y = ..scaled..), size=2)
m + geom_density(colour="darkgreen", size=2) m + geom_density(colour="darkgreen", size=2, fill=NA) m + geom_density(colour="darkgreen", size=2, fill="green")
# Change scales (m <- ggplot(movies, aes(x=votes)) + geom_density(trim = TRUE)) m + scale_x_log10() m + coord_trans(x="log10") m + scale_x_log10() + coord_trans(x="log10")
# Also useful with m + stat_bin()
# Make a volcano plot ggplot(diamonds, aes(x = price)) + stat_density(aes(ymax = ..density.., ymin = -..density..), fill = "grey50", colour = "grey50", geom = "ribbon", position = "identity") + facet_grid(. ~ cut) + coord_flip()
# Stacked density plots # If you want to create a stacked density plot, you need to use # the 'count' (density * n) variable instead of the default density
# Loses marginal densities qplot(rating, ..density.., data=movies, geom="density", fill=mpaa, position="stack") # Preserves marginal densities qplot(rating, ..count.., data=movies, geom="density", fill=mpaa, position="stack")
# You can use position="fill" to produce a conditional density estimate qplot(rating, ..count.., data=movies, geom="density", fill=mpaa, position="fill")
# Need to be careful with weighted data m <- ggplot(movies, aes(x=rating, weight=votes)) m + geom_histogram(aes(y = ..count..)) + geom_density(fill=NA)
m <- ggplot(movies, aes(x=rating, weight=votes/sum(votes))) m + geom_histogram(aes(y=..density..)) + geom_density(fill=NA, colour="black")
library(plyr) # to access round_any movies$decade <- round_any(movies$year, 10) m <- ggplot(movies, aes(x=rating, colour=decade, group=decade)) m + geom_density(fill=NA) m + geom_density(fill=NA) + aes(y = ..count..)
# Use qplot instead qplot(length, data=movies, geom="density", weight=rating) qplot(length, data=movies, geom="density", weight=rating/sum(rating))
stat_bin
for the histogram