Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ggplot2 and geom_density: How to remove baseline?

Tags:

plot

r

ggplot2

I'm using ggplot as described here

Smoothed density estimates

and entered in the R console

m <- ggplot(movies, aes(x = rating))
m + geom_density()

This works but is there some way to remove the connection between the x-axis and the density plot (the vertical lines which connect the density plot to the x-axis)

like image 989
user3069326 Avatar asked Feb 06 '14 10:02

user3069326


3 Answers

The most consistent way to do so is (thanks to @baptiste):

m + stat_density(geom="line")

My original proposal was to use geom_line with an appropriate stat:

m + geom_line(stat="density")

but it is no longer recommended since I'm receiving reports it's not universally working for every case in newer versions of ggplot.

like image 181
tonytonov Avatar answered Nov 13 '22 09:11

tonytonov


The suggested answers dont provide exactly the same results as geom_density. Why not draw a white line over the baseline?

+ geom_hline(yintercept=0, colour="white", size=1)

This worked for me.

like image 28
Benvorth Avatar answered Nov 13 '22 09:11

Benvorth


Another way would be to calculate the density separately and then draw it. Something like this:

a <- density(movies$rating)
b <- data.frame(a$x, a$y)
ggplot(b, aes(x=a.x, y=a.y)) + geom_line()

It's not exactly the same, but pretty close.

like image 7
LauriK Avatar answered Nov 13 '22 09:11

LauriK