ggplot [R]中的使用限制时数据丢失

时间:2018-12-04 16:56:32

标签: r ggplot2

我正在使用ggplot中的条形图制作时间序列。由于某些原因,第一个月和最后一个月的数据均未绘制。我认为这与限制有关-可能排除了限制的边界。但是,当我扩展限制时(本例中为2015年12月至2019年1月),虽然这些月份没有任何数据,但标签现在从12月开始。

我之所以引入限制,是因为不同的情节是在不同的月份开始的(我不知道为什么-一个是线条,另一个是小节,所以可能与不同的论点有关,但对我来说仍然很奇怪)。我希望这些匹配,因此认为控制限制会有所帮助。它们现在可以匹配,但是条形版本列出了问题。

我正在寻找以下解决方案:

  • 显示了数据的第一个月和最后一个月的数据。
  • x轴上的标签从第一个月开始。
  • x轴上的标签不会延伸到最后一个月(即使最后一个月本身没有被标签)。

这是我的代码:

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)

这是它的样子:

Generated plot

感谢您的帮助!

1 个答案:

答案 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不像默认情况那样在侧面添加任何填充。

enter image description here