R 离散轴记号和标签相对于实际值移动

R 离散轴记号和标签相对于实际值移动,r,ggplot2,R,Ggplot2,我有一个如下的数据集:我有一个这样的数据框,叫做data\u frame\u 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

我有一个如下的数据集:我有一个这样的数据框,叫做
data\u frame\u 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))
这导致了下图,几乎是正确的:
但是,x轴标签和记号会移动。我怎么把它放在它所属的地方?

我不太清楚为什么会发生这种情况,但我可能会这样画,因为将时间转换为一个因子对我来说是很直观的:

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)
其中:


您可以使用
scale\u x\u continuous
来更改断点等。

您试图将因子视为数字,而事实并非如此。这里有一个更好的解决方案:

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)

是的,如果你没有一个因素,这实际上比我的答案要好。最后加上
scale\u x\u continuous(breaks=-1:26)
。哦,我看到了成功的诀窍:
group=interaction(time,group)
。这实际上是这个问题的后续问题,我不得不把它分成两个问题:
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)