【发布时间】:2017-08-15 20:45:16
【问题描述】:
我确信这很容易,但我无法从其他帖子中找到解决方案。
如果我运行这个:
test <- data.frame(dates = as.Date(c("2016-10-31","2016-11-30", "2016-12-31", "2017-01-31")),
values = c(1, 2, 3, 4))
ggplot(test, aes(x = dates, y = values)) +
geom_bar(position="stack", stat = "identity") +
scale_x_date(breaks = date_breaks("1 months"),labels = date_format("%b-%y"))
我明白了:
如您所见,X 轴上的所有日期都向前移动到下个月。 我尝试按照其他地方的建议使用 scales 包,但它没有改变任何东西。
我可以通过调整日期来解决这个问题:
test$dates <- as.Date(format(test$dates, "%Y-%m-1"))
提供这个(不使用scale_x_date 位):
但我确信有一种优雅的方法可以规避这个问题。
【问题讨论】:
-
日期不会向前移动,休息时间正好在新月的开始,您的条形图是在此之前 1 天绘制的。如果您仔细观察,您会发现这些条并不完全位于休息点上方,它们会稍微移动到每个休息点的左侧。
-
看起来是真的。不幸的是,它并没有解决问题。同样奇怪的是(请参阅更新的 OP),基于“1/m/y”的图表将标签放在中间。所以我不确定你的分析。