有没有办法在x轴上将日期细分为较小的段?

时间:2019-01-20 10:51:46

标签: r date ggplot2

我正在做一个学校项目,现在已经尝试解决了一段时间,但是我找不到解决方案。

问题是,每当我运行此命令时,x轴就充满了太多变量。我找到了与此类似的帖子,但是该帖子正在使用普通变量而不是像我一样的日期时间变量(%Y /%m),当我尝试运行这样的代码时,女巫会产生问题:

"scale_x_discrete(breaks = seq(0, 100, by = 5))"

请记住,我有很多行,我不知道这是否会引起问题,但是:

和代码:

plottest1 <- function(St, na){


  test1 <- ggplot(data = KunskiDepozit1, aes(x=Datum, y=St, group = 1)) +
    geom_line() + labs(x = "Datum", y = na, title = paste("vizualization ", na)) + geom_point()


  test1 <- test1 +
    theme_update(plot.title = element_text(hjust = 0.5))


  return(test1)
}

2 个答案:

答案 0 :(得分:0)

由于您的x轴是日期,因此我将尝试使用实际的日期轴而不是离散轴。也许玩类似的东西:

scale_x_date(date_breaks = "2 weeks")

有关详细信息,请查看ggplot2标尺文档!

?ggplot2::scale_x_date()

答案 1 :(得分:0)

正如Geosopher和PoGibas所指出的那样,您需要确保ggplot理解Datum是日期。您可能需要考虑使用软件包lubridate

如果我斜视,我认为您的日期信息在YYYY-MM一栏中,因此,要实现此目的,您只需要类似以下内容:

date_df <- existing_df %>%
    mutate(Datum = paste0(Datum, "-01")) %>%
    mutate(Datum = lubridate::ymd(Datum)) 

我从R for Data Science (freely available online)lubridate的章节中提取了以下示例代码,该代码说明了如何使用函数{{1}将日期和时间元素拆分为不同的列时如何进行操作}。它还显示您可以直接绘制日期时间变量,并且ggplot将做正确的事。

lubridate::make_datetime