[英]regression lines over subsets in ggplot2 boxplot
我想在ggplot中的框线图的两个子集上绘制回归线。 但是看来这是不可能的。
这是数据框
这是代码:
ggplot(VMT,aes(x=size , y=vmt, group=specimen,colour=sex,fill=sex)) +
geom_boxplot()+
scale_colour_brewer(palette="Set1")+
#geom_point()+
ylab("VTM (°C)")+
xlab("size")+
geom_smooth(data=subset(VMT,sex==F),
aes(mean(size),mean(vmt), group=specimen,color=sex,method=lm,se=FALSE))
这就是你想要的吗? 看着这个问题,您似乎想要获取每个样本的size
和vmt
的平均值,并使用这些值进行线性回归。 这是使用dplyr
软件包完成的。
library(ggplot2)
library(dplyr)
## df is same as VMT
df <- read.csv("uro7.csv")[,1:7]
df2 <- filter(df, sex == "F") %>%
group_by(specimen) %>%
select(-one_of(c("date", "time", "sex", "turn"))) %>%
summarize_all(mean)
Select
删除四列, summarize_all
采用size
和vmt
的平均值。 由于这保留了列名,因此可以在ggplot
包含aes(x = size, y = vmt)
,以便可以将其传递给geom_boxplot
和geom_smooth
。 另一方面, aes(group = specimen, colour = sex, fill = sex)
需要为geom_boxplot
因为df2
没有这些列。
ggplot(df,aes(x=size, y=vmt)) +
geom_boxplot(aes(group=specimen,colour=sex,fill=sex))+
scale_colour_brewer(palette="Set1")+
#geom_point()+
ylab("VTM (°C)")+
xlab("size") +
geom_smooth(data=df2,
col = "red", method = lm, se = FALSE)
另外,有关原始代码的一些注释:
您应该使用sex == "F"
并且method = lm, se = FALSE
不应该包含在aes
(两者均已在我的代码中修复)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.