2017-02-25 11 views
6

Mam wykres ggplot. Muszę przesunąć paski błędów w stosunku do podartych punktów. Mój kod to:Jak przesunąć pozycje osi x dwóch geomów względem siebie

data("cabbages", package = "MASS") 

require("ggplot2") 

pos_1 <- position_jitterdodge(
    jitter.width = 0.25, 
    jitter.height = 0, 
    dodge.width = 0.9 
) 

gg <- 
    ggplot(data = cabbages, 
      aes(
       x  = Cult, 
       y  = HeadWt, 
       colour = Cult, 
       fill = Cult 
       )) + 

    geom_jitter(alpha = 0.4, position = pos_1) + 

    stat_summary(fun.y = "mean", geom = "point", size = 3) + 

    stat_summary(fun.data = "mean_cl_normal", 
       geom = "errorbar", 
       width = 0.05, 
       lwd = 1, 
       fun.args = list(conf.int = 0.95) 
) + 

    theme_bw() 

print(gg) 

Obecny wynik to:

enter image description here

I muszę coś takiego:

enter image description here

Odpowiedz

5

Możesz dodać offset x w aes w każdy stat_summary (aes(x = as.numeric(Cult) + 0.2)):

ggplot(data = cabbages, 
     aes(x = Cult, 
      y  = HeadWt, 
      colour = Cult, 
      fill = Cult)) + 
    geom_jitter(alpha = 0.4, position = pos_1) + 
    stat_summary(aes(x = as.numeric(Cult) + 0.2), fun.y = "mean", geom = "point", size = 3) + 
    stat_summary(aes(x = as.numeric(Cult) + 0.2), fun.data = "mean_cl_normal", 
       geom = "errorbar", 
       width = 0.05, 
       lwd = 1, 
       fun.args = list(conf.int = 0.95)) + 
    theme_bw() 

enter image description here

+0

Należy zauważyć, że w konstruowaniu fabuły będziesz potrzebował 'geom' z kategorycznym osi x _before_ dodasz' geom' z 'x = as.numeric (czynnik) +0,1 '. Pierwszy "geom", który dodajesz, ustawia typ osi X, więc jeśli dodasz najpierw 'geom' z' x = as.numeric (factor) + 0.1', oś x będzie ciągła i możesz ' t dodaj zmienną czynnikową do osi ciągłej (chyba, że ​​najpierw ją przekonwertujesz używając 'as.numeric()'). – filups21