如何格式化data.frame和ggplot中的日期? [关闭]

问题描述 投票:0回答:1

我有以下数据框:

df <- data.frame(A=c("2019-01", "2019-02", "2019-03", "2019-04", "2019-05"),
             B=c(12.5, 24.5, 23.4, 45.0, 12.0))
## + > df
##         A    B
## 1 2019-01 12.5
## 2 2019-02 24.5
## 3 2019-03 23.4
## 4 2019-04 45.0
## 5 2019-05 12.0

A列包含日期(YYYY-MM),B列对应于那些日期的观测值。

我想使用ggplot2绘制图形,并且我需要日期以MM-YY格式沿X轴显示,例如Jan-19

r date ggplot2 axis
1个回答
0
投票

请下次考虑给我们提供一个可重复的示例,并以更加精确的方式说明您的问题。

尽管如此,利用您提供的信息,您可以执行以下操作:

首先,让我们制作一个带有正确日期数据的向量,以避免进一步的问题。我假设您的观察是在每月的第一天完成的,所以您的向量A如下所示:

A <- paste0(c("2019-01", "2019-02", "2019-03", "2019-04", "2019-05"), "-01")

如果我们直接创建data.frame,它将是:

df <- data.frame(A=paste0(c("2019-01", "2019-02", "2019-03", "2019-04", "2019-05"), "-01"),
             B=c(12.5, 24.5, 23.4, 45.0, 12.0), stringsAsFactors = FALSE)

或使用magrittr

library(magrittr)
df <- paste0(c("2019-01", "2019-02", "2019-03", "2019-04", "2019-05"), "-01") %>%
        data.frame(A=.,B=c(12.5, 24.5, 23.4, 45.0, 12.0), stringsAsFactors = FALSE)

然后我们将A格式化为日期:

df$A <- as.Date(df$A, format="%Y-%m-%d")

要绘制它,您应该做类似的事情:

library(ggplot2)
ggplot(data = df, aes(x=A, y=B)) +
  geom_line() +
  scale_x_date(date_labels = "%b-%y", date_breaks = "1 month") +
  theme_light() +
  labs(x="time") +
  theme(legend.position = "bottom")

希望有帮助

PS:查看有关date formats的信息

© www.soinside.com 2019 - 2024. All rights reserved.