繁体   English   中英

ggplot2 boxplot中的子集上的回归线

[英]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))

这就是你想要的吗? 看着这个问题,您似乎想要获取每个样本的sizevmt的平均值,并使用这些值进行线性回归。 这是使用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采用sizevmt的平均值。 由于这保留了列名,因此可以在ggplot包含aes(x = size, y = vmt) ,以便可以将其传递给geom_boxplotgeom_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM