2

I have a data frame like this

data = as.data.frame(data.table::rbindlist(PLOTS))

head(data)
    Y              X     dep_C1

   3.96655960      0     184
  -8.71308460      0     184
 -11.11638947      0     184
  -6.84213562      11    184
  -1.25926609      11    184
  -4.60649529      11    184
   0.27577858      11    184
  11.85394249      20    184
  -0.27114563      20    184
   1.73081284      20    184
   1.78209915      20    184
  11.34305840      20    184
  13.49688263      20    184
  -7.54752045      20    184
 -13.63673286      25    184
  -5.75711517      25    184
   0.35823669      25    184
  -2.45237694      25    184
   0.49313087      0     66
  -9.04148674      0     66
 -15.50337906      0     66
 -17.51445351      0     66
 -10.66807098      0     66
  -2.24337845      5     66
 -13.79929533      5     66
   1.33287125      5     66
   2.22143402      5     66
  11.46484833      10    66
  23.26805916      10    66
   9.07377968      10    66
   4.28664665      10    66

I am trying to create two box plots for the two dep_C1 values and overlay them. I tried with this

ggplot(data, aes(x=factor(X), y=Y, colour = factor(dep_C1))) 
+ geom_boxplot(outlier.size=0,fill = "white") 
+ stat_summary(fun.y=median, geom="line", aes(group=1,colour = factor(dep_C1)),size=2)

These are my problems

1) The two box plots are side by side and not overlaid

2) The command that draw a line between the medians is not working OK: lines should connect medians of boxplots of the same group (with only one boxplot is fine)

3) The values on the x axis are messed up (the series start again after 96)

Can someone help me fix these problems? Thanks in advance

enter image description here

2
  • Well, could you please illustrate the question #2: do I understand correctly, that you want boxplots of the same group to be connected? Could you add a reproducible example (possibly with the picture), what do you mean by "OK"? Commented Oct 20, 2015 at 14:39
  • To #3: why then the data is not merged into a single boxplot at point 0, for example? Commented Oct 20, 2015 at 14:54

2 Answers 2

3

Your first two problems are easy to fix. To overlay the boxplots, you want to specify position="identity" and probably something like alpha=0.5. For the line, the group should be group=factor(dep_C1). Together this will look as follows:

ggplot(data, aes(x=factor(X), y=Y, colour = factor(dep_C1)))  +
 geom_boxplot(outlier.size=0, fill = "white", position="identity", alpha=.5)  +
 stat_summary(fun.y=median, geom="line", aes(group=factor(dep_C1)), size=2) 

For the 3rd question, you are using factor(X), which defines the scale of the axis. You can change this scale using scale_x_discrete. Perhaps you are looking for something like the following:

scale_x_discrete(limits=seq(min(data$X), max(data$X)))
Sign up to request clarification or add additional context in comments.

Comments

0

The fix to the third problem is best solved if you convert X to continuos scale and not a factor; to make a box plot, though, you'll need group = interaction(time, group) is aes:

ggplot(data_frame_test, aes(x=time, y=Value, colour = factor(group), group = interaction(time, group)))  +
 geom_boxplot(outlier.size=0, fill = "white", position="identity", alpha=.5)  +
 stat_summary(fun.y=median, geom="line", aes(group=factor(group)), size=2)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.