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))
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.
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.
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().
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.
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".
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:
There's also some documentation for geom_smooth that does pretty much what you'd like, albeit in a more complicated (yet flexible) manner.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With