Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fill different colors for each quantile in geom_density() of ggplot [duplicate]

Tags:

r

ggplot2

I am using ggplot to show percentiles of the data. I am using the following code,

data <- seq(from=0,to=30,length.out=1000)

q <- quantile(data)

ggplot()+ 
  geom_density(aes(x=data)) +  
  annotate(geom="text", x=q, y=0, label=names(q)) +
  theme(text = element_text(size=10)) +
  geom_vline(x=q, linetype = "longdash")

The following is the graph I am getting,

enter image description here

I am looking to fill different colors for each segment. i.e. for 0-25% one color and 25-50 another color. Is it possible to do that?

Also the vertical lines are running through the entire graph. I want to stop it until the curve alone. Instead of running through it completely.

can anybody help me in doing these both?

like image 276
Observer Avatar asked Dec 01 '15 20:12

Observer


1 Answers

Simply copying answer from where Sam is pointing to

enter image description here

dt <- data.frame(x=c(1:200),y=rnorm(200))
dens <- density(dt$y)
df <- data.frame(x=dens$x, y=dens$y)
probs <- c(0, 0.25, 0.5, 0.75, 1)
quantiles <- quantile(dt$y, prob=probs)
df$quant <- factor(findInterval(df$x,quantiles))
ggplot(df, aes(x,y)) + geom_line() + geom_ribbon(aes(ymin=0, ymax=y, fill=quant)) + scale_x_continuous(breaks=quantiles) + scale_fill_brewer(guide="none")
like image 97
Eric Fail Avatar answered Oct 27 '22 14:10

Eric Fail