简体   繁体   中英

ggplot2; how to draw group mean lines of two different groups in a categorical variable

I have a following set of data;

    V1 V2  V3
 1: G1 P1 82.7
 2: G2 P1 64.6
 3: G2 P1 81.2
 4: G2 P1 95.3
 5: G1 P1 80.0
 6: G2 P1   NA
 7: G2 P1 65.0
 8: G1 P1 83.8
 9: G1 P1 88.0
10: G1 P1 66.9
11: G1 P1 56.8
12: G1 P2 65.1
13: G2 P2 57.7
14: G2 P2 60.4
15: G2 P2 18.6
16: G1 P2 41.2
17: G2 P2 47.0
18: G2 P2 37.1
19: G1 P2 18.8
20: G1 P2 47.9
21: G1 P2 40.0
22: G1 P2 54.3

I made the following plot by using ggplot2;

ggplot(a,aes(x=V2,y=V3))+
    geom_jitter(aes(group=V1,color=V1,na.rm=T), position =position_jitterdodge())+
    stat_summary(fun.y="mean",geom="crossbar", 
             mapping=aes(ymin=..y.., ymax=..y..), width=1)

在此输入图像描述

V1 contains two categorial variable, P1 and P2 and within them, there are two subcategories, G1 and G2. What I like to do is to generate the plot with mean lines of G1 and G2 but the code above gives me the mean of categorical variables, P1 and P2.

I'd really appreciate any help on this.

Thanks.

Move color=V1 to aes() of ggplot() to have different colors for crossbars and aldo add postion_dodge() to stat_summary() .

ggplot(a,aes(x=V2,y=V3,color=V1))+
  geom_jitter(aes(group=V1,na.rm=T), position =position_jitterdodge())+
  stat_summary(fun.y="mean",geom="crossbar", 
               mapping=aes(ymin=..y.., ymax=..y..), width=1,
               position=position_dodge(),show.legend = FALSE)

在此输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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