我有以下数据框:
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
。但是,我不知道如何正确格式化日期以使ggplot以这种方式运行。
我如何正确格式化data.frame中的日期以在ggplot中获得所需的结果?
请下次考虑给我们提供一个可重复的示例,并以更加精确的方式说明您的问题。
尽管如此,利用您提供的信息,您可以执行以下操作:
首先,让我们制作一个带有正确日期数据的向量,以避免进一步的问题。我假设您的观察是在每月的第一天完成的,所以您的向量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的信息