我想制作一个图形,用于绘制两组的箱形图,并为每个组添加回归线。我见过几个例子,但没有达到我的目标。
我的数据框是这样的:
df<- data.frame(cont.burnint= c(rep(2,10), rep(12, 10), rep(25, 10)),
variable= rep(c("divA","divC"), 30),
value= sample(x = seq(-1,4,0.5), size = 60, replace =
TRUE))
但是,我想将每个组的点更改为方框图。我在下面没有找到有用的例子:
Add geom_smooth to boxplot Adding a simple lm trend line to a ggplot boxplot
到目前为止我找到的代码将连续变量cont.burnint
更改为一个因子,并将x值从c(2,12,25)重新排序到c(12,2,25)。此外,ggplot示例中的回归线(请参阅链接)不会延伸到y轴。我希望回归线延伸到y轴。第三,箱形图彼此偏离设置,我想要一个选项,使两个组的箱形图保持相同的x值。
所以基本上,在上面的例子中,我想改变提供给框和胡须图的图中的点,并保持其他所有相同。我不介意在情节下方添加一个图例,并使文字和线条也更大胆。
以下是上述示例的代码:
plot(as.numeric(as.character(manovadata$cont.burnint)),manovadata$divA,type="p",col="black", xlab="Burn Interval (yr)", ylab="Interaction Diveristy", bty="n", cex.lab=1.5)
points(as.numeric(as.character(manovadata$cont.burnint)),manovadata$divC,col="grey")
abline(lm(manovadata$divA~as.numeric(as.character(manovadata$cont.burnint)), manovadata),col="black",lty=1)
abline(lm(manovadata$divC~as.numeric(as.character(manovadata$cont.burnint)), manovadata),col="grey",lty=1)
答案 0 :(得分:0)
我无法想象你为什么要覆盖箱形图,但是我想你在这里:
library(ggplot2)
df$cont.burnint <- as.factor(df$cont.burnint)
ggplot(df, aes(x=cont.burnint, y=value, col=variable))+
geom_boxplot(position=position_dodge(width=0), alpha=0.5)+
geom_smooth(aes(group=variable), method="lm")
我使用alpha
为箱图添加了一些透明度,使它们在彼此之上可见。
更新
ggplot(df, aes(x=cont.burnint, y=value, col=variable))+
geom_boxplot(aes(group=paste(variable,cont.burnint)))+
geom_smooth(aes(group=variable), method="lm", fullrange=T, se=F)+xlim(0,30)