user3069326
user3069326

Reputation: 575

ggplot2 and geom_density: How to remove baseline?

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)

Upvotes: 41

Views: 17483

Answers (3)

tonytonov
tonytonov

Reputation: 25608

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.

Upvotes: 68

Benvorth
Benvorth

Reputation: 7722

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.

Upvotes: 8

LauriK
LauriK

Reputation: 1929

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.

Upvotes: 7

Related Questions