I have a dataset as follows: I have a data frame like this, called data_frame_test
.
Value time group
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
data_frame_test <- structure(list(Value = c(3.9665596, -8.7130846, -11.11638947,
-6.84213562, -1.25926609, -4.60649529, 0.27577858, 11.85394249,
-0.27114563, 1.73081284, 1.78209915, 11.3430584, 13.49688263,
-7.54752045, -13.63673286, -5.75711517, 0.35823669, -2.45237694,
0.49313087, -9.04148674, -15.50337906, -17.51445351, -10.66807098,
-2.24337845, -13.79929533, 1.33287125, 2.22143402, 11.46484833,
23.26805916, 9.07377968, 4.28664665), time = c(0L, 0L, 0L, 11L,
11L, 11L, 11L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 25L, 25L, 25L,
25L, 0L, 0L, 0L, 0L, 0L, 5L, 5L, 5L, 5L, 10L, 10L, 10L, 10L),
group = c(184L, 184L, 184L, 184L, 184L, 184L, 184L, 184L,
184L, 184L, 184L, 184L, 184L, 184L, 184L, 184L, 184L, 184L,
66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L,
66L)), .Names = c("Value", "time", "group"), class = "data.frame", row.names = c(NA,
-31L))
I want to plot a boxplot of a value for each time point and group.
ggplot(data_frame_test, aes(x=factor(time), y=Value, colour = factor(group))) +
geom_boxplot(outlier.size=0, fill = "white", position="identity", alpha=.5) +
scale_x_discrete(limits = seq(-1,26), breaks = seq(-1,26), labels = seq(-1,26))
This results in the following picture, which is almost right: However, the x axis labels and ticks are shifted. How do I put it where it belongs?
You are trying to treat a factor like a numeric, which it isn't. Here is a better solution:
ggplot(data_frame_test, aes(x=factor(time, levels = seq(-1,26), ordered = TRUE),
y=Value, colour = factor(group))) +
geom_boxplot(outlier.size=0, fill = "white", position="identity", alpha=.5) +
scale_x_discrete(drop = FALSE)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With