数据看起来像
头(new_df) 月份 雇员 年 2013 年 1 月 1 日 13324 2013 年 2 月 2 日 13470 2013 年 3 月 3 日 13740 2013 年 4 月 14074 日 2013 年 5 月 5 日 14459 2013 年 6 月 14881 日
数据框有 120 行,2013 到 2022 每年有 10 个“emp”。
这是我的代码:
ggplot(new_df, aes(x=month, y=emp, group=1, color=year)) +
geom_line()
我预计有 10 行,每年 1 行。我得到了垂直的线条,10 年的 emp 被堆叠起来。
您说您的绘图中总共需要 10 行,每年 1 行。但是,您的数据框对于每个年份值都有多行(例如,在您提供的示例中,2013 年有六行)。因此,听起来您想通过 month
和
year
总结数据,这可以使用
dplyr
包来完成。
library(tidyverse)
month <- rep(x = month.abb, times = 10)
emp <- sample(x = 12000:15000, size = 120, replace = TRUE)
year <- rep(2013:2022, times = 12)
new_df <- data.frame(month, emp, year) %>%
mutate(year = factor(year)) %>%
mutate(month = factor(month))
# original plot
ggplot(new_df, aes(x = month, y = emp, group = 1, color = year)) +
geom_line()
# original plot with group changed to `year`, added geom_point
ggplot(new_df, aes(x = month, y = emp, group = year, color = year)) +
geom_line() + geom_point()
# summarized plot with geom_point
newer_df <- new_df %>%
group_by(month, year) %>%
summarize(emp_mean = mean(emp))
ggplot(newer_df, aes(x = month, y = emp_mean, group = year, color = year)) +
geom_line() + geom_point()