来自同一数据帧的不寻常的多线图

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

数据看起来像

头(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 被堆叠起来。

r ggplot2
1个回答
0
投票

您说您的绘图中总共需要 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()

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