如何在R中的相同散点图中绘制几条回归线?

时间:2014-07-09 10:38:49

标签: r plot regression

我有一个数据框,其数据为体温(Tb),基质温度(​​Ts),适用于两性的几个人以及来自三个不同人群的数据像这样: (因为我无法分享我的全桌,所以我编写了这张桌子,但是我每个流行音乐大约有30个人)

pop  sex  tb  ts
bo    m     37   30
bo    m     39   29
bo    f     36   36
pa    m     40   34
pa    f     37   28
pa    m     37   33
pa    f     36   26
re    f     35   24
re    f     37   29
re    m     38   30

我想评估Tb和Ts之间的关系,但不仅要考虑物种,还要分别评估每个种群之间的关系,以便找出它们之间斜率的可能差异。

my.regression <- lm(tb ~ ts*pop*sex, data = mydata)

我设法绘制了一个不同颜色的散点图,一个是我的人口。但是,我无法绘制我的回归线。我到处搜索答案:关于如何按组添加回归线...(不是在stackoverflow中,甚至没有全能谷歌,youtube教程,R书,R图形书等的帮助)

我想要的是按每个人口绘制一条回归线。类似于this plot

的东西

1 个答案:

答案 0 :(得分:2)

使用ggplot2geom_smooth图层很容易做到:

library(ggplot2)
ggplot(mydata, aes(x=tb, y=ts, col=pop)) + geom_point() +
            geom_smooth(method="lm", se=FALSE)

如果你想按性别分开,那么按照@Henrik的建议你可能想尝试将它们放在单独的子图中(称为facet):

ggplot(mydata, aes(tb, ts, col=pop)) + geom_point() +
             geom_smooth(method="lm", se=FALSE) + facet_wrap(~ sex)

或者你可以用两者进行绘图,但使用线型(实线或虚线)来区分性别:

ggplot(mydata, aes(tb, ts, col=pop, lty=sex)) + geom_point() +
             geom_smooth(method="lm", se=FALSE)