离散轴刻度和标签与实际值相比发生偏移

时间:2015-10-21 08:28:21

标签: r ggplot2

我有一个数据集如下:我有一个这样的数据框,叫做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))

我想为每个时间点和组绘制一个值的箱线图。

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))

这导致以下图片,几乎是正确的: enter image description here 但是,x轴标签和刻度线会发生偏移。我怎么把它放在它所属的地方?

2 个答案:

答案 0 :(得分:6)

您正在尝试将数字因素视为数字,但它并非如此。这是一个更好的解决方案:

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)

resulting plot

答案 1 :(得分:5)

我不太确定为什么会发生这种情况,但我可能会像这样制作情节,因为将时间转换为一个因素对我来说很直观:

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)

给出了:

enter image description here

您可以使用scale_x_continuous更改中断等。