Lubridatatate month() 多年
Lubridatate month() for multiple years
我想绘制 2019 年和 2020 年的情节,但我 运行 遇到了来自 lubridate 的 month()
函数的问题。
如果我 运行 这个:
df %>%
mutate (Month = month(Date, label=T)) %>%
group_by(Month, Var1) %>%
summarize (sum = sum(numeric_variable)) %>%
ggplot(aes(Month, sum)) +
geom_col() +
facet_wrap(. ~ Var1, scales ="free_y")
图中合并了 2019 年和 2020 年 1 月以及其他月份的数据,这是有道理的,因为它们在 2019 年和 2020 年的月份变量中都被标记为 'Jan'
。
如何才能最好地将 2019 年和 2020 年的月份分开,同时仍保留标签 ('janb, 'feb') 和我的月份变量的顺序?我必须手动将它们作为一个因素重新排序还是有更好的方法?
Lubridate 在某些方面很不错,但我更喜欢 zoo::as.yearmon
好几个月好几年。 ggplot
:
甚至还有一个不错的 scale_x_yearmon
函数
library(zoo)
df %>%
mutate (Month = zoo::as.yearmon(Date)) %>%
group_by(Month, Var1) %>%
summarize (sum = sum(numeric_variable)) %>%
ggplot(aes(Month, sum)) +
geom_col() +
facet_wrap(. ~ Var1, scales ="free_y") +
zoo::scale_x_yearmon(format = "%b")
示例数据:
set.seed(123)
df <- data.frame(Date = rep(seq(as.Date("2019-01-01"),as.Date("2020-12-31"), by = "day"),2),
Var1 = rep(LETTERS[1:2],each = 731),
numeric_variable = round(runif(2*731,1,100)))
谢谢伊恩,你让我走上了正确的道路。 scale_x_yearmon 虽然对我不起作用。但是因为顺序是正确的,所以我可以将动物园的 yearmon 的结果转换为一个因素并从那里开始工作。
df %>%
mutate (Month = as.factor(zoo::as.yearmon(Date))) %>%
group_by(Month, Var1) %>%
ggplot(aes(Month, numeric_variable)) +
geom_col() + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
我知道在 x 轴上有一个 'jan 2019'/ 'dec 2019' 和 'jan 2020' / 'dec 2020' 现在已经足够好了。问题已解决。
我想绘制 2019 年和 2020 年的情节,但我 运行 遇到了来自 lubridate 的 month()
函数的问题。
如果我 运行 这个:
df %>%
mutate (Month = month(Date, label=T)) %>%
group_by(Month, Var1) %>%
summarize (sum = sum(numeric_variable)) %>%
ggplot(aes(Month, sum)) +
geom_col() +
facet_wrap(. ~ Var1, scales ="free_y")
图中合并了 2019 年和 2020 年 1 月以及其他月份的数据,这是有道理的,因为它们在 2019 年和 2020 年的月份变量中都被标记为 'Jan'
。
如何才能最好地将 2019 年和 2020 年的月份分开,同时仍保留标签 ('janb, 'feb') 和我的月份变量的顺序?我必须手动将它们作为一个因素重新排序还是有更好的方法?
Lubridate 在某些方面很不错,但我更喜欢 zoo::as.yearmon
好几个月好几年。 ggplot
:
scale_x_yearmon
函数
library(zoo)
df %>%
mutate (Month = zoo::as.yearmon(Date)) %>%
group_by(Month, Var1) %>%
summarize (sum = sum(numeric_variable)) %>%
ggplot(aes(Month, sum)) +
geom_col() +
facet_wrap(. ~ Var1, scales ="free_y") +
zoo::scale_x_yearmon(format = "%b")
示例数据:
set.seed(123)
df <- data.frame(Date = rep(seq(as.Date("2019-01-01"),as.Date("2020-12-31"), by = "day"),2),
Var1 = rep(LETTERS[1:2],each = 731),
numeric_variable = round(runif(2*731,1,100)))
谢谢伊恩,你让我走上了正确的道路。 scale_x_yearmon 虽然对我不起作用。但是因为顺序是正确的,所以我可以将动物园的 yearmon 的结果转换为一个因素并从那里开始工作。
df %>%
mutate (Month = as.factor(zoo::as.yearmon(Date))) %>%
group_by(Month, Var1) %>%
ggplot(aes(Month, numeric_variable)) +
geom_col() + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
我知道在 x 轴上有一个 'jan 2019'/ 'dec 2019' 和 'jan 2020' / 'dec 2020' 现在已经足够好了。问题已解决。