Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
385 views
in Technique[技术] by (71.8m points)

r - How to shift x axis positions of two geoms relative to each other

I have a ggplot plot. I need to shift error bars relative to jittered points. My code is:

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)

Current result is:

enter image description here

And I need something like this:

enter image description here

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You may add an offset to x in aes in eachstat_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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...