2016-10-14 10 views
0

ggplotのボックスプロットの2つのサブセットに回帰直線をプロットする必要があります。しかし、それは不可能であるように見えます。ここでggplot2 boxplotのサブセット上の回帰直線

はここdataframe

あるコードです:

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)) 

答えて

2

は、あなたが何を望むか、このですか?その質問を見ると、それぞれの標本について平均値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 4つの列をドロップし、summarize_allsizevmtの平均をとります。これにより列名が保持されるので、aes(x = size, y = vmt)ggplotに含めることができ、geom_boxplotgeom_smoothの両方に渡すことができます。一方、aes(group = specimen, colour = sex, fill = sex)は、df2にこれらの列がないため、geom_boxplotである必要があります。

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) 

enter image description here

また、元のコードに関するいくつかのコメント:

あなたがsex == "F"method = lm, se = FALSEが(どちらが私のコードで修正されている)aesに含めるべきではないはずです。

関連する問題