如何格式化 data.frame 和 ggplot 中的日期?
How to format dates in data.frame and ggplot?
我有以下数据框:
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
.
下次请考虑给我们一个可重现的例子,并以更准确的方式说明您的问题。
尽管如此,根据您提供的信息,您可以执行以下操作:
首先,让我们用正确的日期数据制作一个矢量,以避免进一步的问题。我假设您的观察是在本月的第一天完成的,因此您的向量 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:查看此 post 关于 date formats
我有以下数据框:
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
.
下次请考虑给我们一个可重现的例子,并以更准确的方式说明您的问题。
尽管如此,根据您提供的信息,您可以执行以下操作:
首先,让我们用正确的日期数据制作一个矢量,以避免进一步的问题。我假设您的观察是在本月的第一天完成的,因此您的向量 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:查看此 post 关于 date formats