我正在使用ggplot中的条形图制作时间序列。由于某些原因,第一个月和最后一个月的数据均未绘制。我认为这与限制有关-可能排除了限制的边界。但是,当我扩展限制时(本例中为2015年12月至2019年1月),虽然这些月份没有任何数据,但标签现在从12月开始。
我之所以引入限制,是因为不同的情节是在不同的月份开始的(我不知道为什么-一个是线条,另一个是小节,所以可能与不同的论点有关,但对我来说仍然很奇怪)。我希望这些匹配,因此认为控制限制会有所帮助。它们现在可以匹配,但是条形版本列出了问题。
我正在寻找以下解决方案:
这是我的代码:
library(ggplot2)
library(lubridate)
num_month <- seq(from = as.Date("2016-01-01"), to = Sys.Date(), by='month')
month_data <- as.data.frame(matrix(0, ncol = 0, nrow = length(num_month)))
month_data$month <- as.POSIXct(num_month)
month_data$freq <- sample(100, size = nrow(month_data), replace = TRUE)
today <- as.POSIXct(Sys.Date())
date_lims <- c(as.POSIXct("2016-01-01", format = "%Y-%m-%d"), today)
ggplot(month_data, aes(x = month, y = freq)) +
geom_bar(stat = "identity") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5, size = 12)) +
scale_x_datetime(labels = date_format("%b-%y"), breaks = date_breaks("2 months"),
limits = date_lims)
这是它的样子:
感谢您的帮助!
答案 0 :(得分:1)
ggplot(month_data, aes(x = month, y = freq)) +
geom_bar(stat = "identity") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5, size = 12)) +
scale_x_datetime(date_labels = "%b-%y", date_breaks = "2 months",
limits = date_lims, expand = c(0,0))
这似乎对我有用。我认为expand = c(0,0)
部分是您所缺少的;这告诉ggplot不像默认情况那样在侧面添加任何填充。