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)