我正在处理一个使用months作为离散x轴变量的数据集。我有3年和12个月的数据。我想生成一个仅显示6月,7月,8月和9月4个月的箱形图;在我的数据中以数字方式对应于6,7,8和9个月。我也通过“治疗”进行区分,并希望每年分别绘制,所以我使用了facet函数。
以下是一些示例数据:
treatment date year month Day mean_VWC
<chr> <chr> <int> <int> <int> <dbl>
1 control 1/1/2016 2016 1 1 0.2607630
2 control 1/1/2017 2017 1 1 0.2688776
3 control 1/10/2016 2016 1 10 0.2780299
4 control 1/10/2017 2017 1 10 0.2477122
5 control 1/11/2016 2016 1 11 0.2847904
6 control 1/11/2017 2017 1 11 0.2627695
以下是我正在使用的代码:
ggplot(soil.mc_day, aes(as.factor(month), mean_VWC, fill=treatment)) +
geom_boxplot(position=position_dodge(width=1), size = .5, outlier.colour = "black", color="black") +
facet_wrap(~ year) +
scale_x_discrete(limit = c(6,7,8,9),
labels=as.character(c("Jun","Jul","Aug","Sep")))
正如您所看到的,它正在截断我想要的数据,但x轴的标记和标签是偏离的,甚至延伸到图的右端。任何人都知道可能会发生什么?
我也很快就会提到,我已经玩过休息功能,没有在x轴上设置限制。它显示我的x轴与技巧/标签正确对齐,但正如您所看到的那样绘制所有数据b / c我没有应用限制功能。这是代码:
ggplot(soil.mc_day, aes(as.factor(month), mean_VWC, fill=treatment)) +
geom_boxplot(position=position_dodge(width=1), size = .5, outlier.colour = "black", color="black") +
facet_wrap(~ year) +
scale_x_discrete(breaks = c(6,7,8,9),
labels=as.character(c("Jun","Jul","Aug","Sep"))) +
theme(axis.text.x = element_text(angle = 90, vjust = 0.3))
所以,我的最终问题是:第一张图中x轴标签上发生了什么,我该如何解决?
谢谢。
答案 0 :(得分:1)
很难说没有看到完整的数据集,但似乎你试图限制要在ggplot调用中绘制的数据,而不是在将数据输入ggplot之前。
在运行绘图功能之前,您是否尝试过滤数据?
这样的事情:
df <- soil.mc_day %>%
filter(month %in% seq(6, 9)) %>%
mutate(month = factor(month, labels = c("June", "July", "August", "September"))
然后使用没有轴缩放的绘图。
df %>%
ggplot(aes(x = month, y = mean_VMC, fill = treatment)) +
geom_boxplot(position = position_dodge(width = 1),
size = 0.5,
color = "black",
outlier.color = "black") +
facet_wrap(~ year)