我正在根据同一图上的众多变量来绘制物种的出现。还有许多其他变量,但是为了这篇文章,我只保留了重要的变量:
> str(GH)
'data.frame': 288 obs. of 21 variables:
$ Ee : int 2 2 1 7 6 3 0 9 3 7 ...
$ height : num 14 25.5 25 21.5 18.5 36 18 31.5 28.5 19 ...
$ legumes : num 0 0 55 30 0 0 55 10 30 0 ...
$ grass : num 60 50 30 35 40 35 40 40 35 30 ...
$ forbs : num 40 70 40 50 65 70 40 65 70 70 ...
我设法将其绘制得很好,并使用(其中Ee是有问题的物种)使它看起来不错:
ggplot(data=GH,aes(y=y,x=x),ylab="Number of individuals (N)",xlab="Percentage cover (%); OR Height(cm))+
geom_jitter(aes(legumes,Ee),colour="blue")+
geom_jitter(aes(grass,Ee),colour="green")+
geom_jitter(aes(forbs,Ee),colour="red")+
geom_jitter(aes(height,Ee),colour="black")
但是,我想为每个变量添加回归线(并计算R平方值),到目前为止还没有运气。另外,轴标签拒绝从X和Y更改,这是我以前从未遇到过的。有人可以帮我这个忙吗?干杯
最佳答案
在ggplot2中使用geom_smooth
geom可以显示回归线。我正在使用mtcars
数据集,因为它与您的数据集非常相似:
ggplot(mtcars) +
geom_jitter(aes(disp,mpg), colour="blue") + geom_smooth(aes(disp,mpg), method=lm, se=FALSE) +
geom_jitter(aes(hp,mpg), colour="green") + geom_smooth(aes(hp,mpg), method=lm, se=FALSE) +
geom_jitter(aes(qsec,mpg), colour="red") + geom_smooth(aes(qsec,mpg), method=lm, se=FALSE) +
labs(x = "Percentage cover (%)", y = "Number of individuals (N)")
另外,我从
aes(y=y,x=x)
中删除了ggplot
,因为它没有任何意义。结果:使用
melt
包中的reshape2
可以完成更多(但效果更好)的方法:require(ggplot2)
require(reshape2)
mtcars2 = melt(mtcars, id.vars='mpg')
ggplot(mtcars2) +
geom_jitter(aes(value,mpg, colour=variable),) + geom_smooth(aes(value,mpg, colour=variable), method=lm, se=FALSE) +
facet_wrap(~variable, scales="free_x") +
labs(x = "Percentage cover (%)", y = "Number of individuals (N)")
此解决方案的一个重要元素是
scales="free_x"
选项,该选项允许在每个构面图上独立缩放X。关于r - 多个ggplot线性回归线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25752909/