Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

adding regression line per group with ggplot2

Tags:

r

ggplot2

I do the following graph:

> ddd
      UV.NF TRIS            volvol
2  145.1923   31  500 µl / 625  µl
3  116.3462   50  500 µl / 625  µl
4  127.1635   60  500 µl / 625  µl
5  125.9615   69  500 µl / 625  µl
6  162.0192   30    1 ml / 625  µl
7  166.8269   50    1 ml / 625  µl
8  176.4423   60    1 ml / 625  µl
9  171.6346   70    1 ml / 625  µl
19 292.3077   31 500 µl / 2500  µl
20 321.1538   50 500 µl / 2500  µl
21 225.0000   60 500 µl / 2500  µl
22 263.4615   69 500 µl / 2500  µl
23 301.9231   30   1 ml / 2500  µl
24 350.0000   50   1 ml / 2500  µl
25 282.6923   60   1 ml / 2500  µl
26 282.6923   70   1 ml / 2500  µl
35 133.6207   31  500 µl / 625  µl

ggplot() +  
    geom_point(aes(y = log(UV.NF), x = TRIS, colour=ddd[,"volvol"], shape=ddd[,"volvol"]), 
        data=ddd) + 
    labs(colour = "volvol", shape="volvol") + xlab("TRIS (mM)") + 
    guides(colour = guide_legend(title="Vol. lyo. / Vol. reconst."), 
        shape=guide_legend(title="Vol. lyo. / Vol. reconst.")) +
    scale_shape_manual(values = c(19,19,3,3)) + scale_colour_manual(values = c(2,4,2,4))

graph

I want to add the regression line lm(y~x) for each of the four groups appearing in the legend. I have done many attempts with geom_smooth() but without success.

like image 339
Stéphane Laurent Avatar asked Sep 05 '12 12:09

Stéphane Laurent


People also ask

How do I add a regression line in ggplot2?

Adding a regression line on a ggplot You can use geom_smooth() with method = "lm" . This will automatically add a regression line for y ~ x to the plot.

How do you add a regression line in R?

A regression line will be added on the plot using the function abline(), which takes the output of lm() as an argument. You can also add a smoothing line using the function loess().

How do you do a two regression line in R?

To graph two regression lines in Basic R, we need to isolate the male data from the female data by subsetting. We will call the male data, melanoma_male and the female data, melanoma_female. The regression line will be drawn using the function abline( ) with the function, lm( ), for linear model.

How do you add a regression line?

To add a regression line, choose "Add Chart Element" from the "Chart Design" menu. In the dialog box, select "Trendline" and then "Linear Trendline". To add the R2 value, select "More Trendline Options" from the "Trendline menu. Lastly, select "Display R-squared value on chart".


1 Answers

I'm not quite sure whether that's what you want, but have you tried the following?

ggplot(ddd,aes(y = log(UV.NF), x = TRIS, colour = volvol, shape = volvol)) +
   geom_point() + geom_smooth(method = "lm", fill = NA)

This gives me the following plot with your data:enter image description here

There's also some documentation for geom_smooth that does pretty much what you'd like, albeit in a more complicated (yet flexible) manner.

like image 140
Aleksandar Dimitrov Avatar answered Oct 05 '22 17:10

Aleksandar Dimitrov