R语言 来自同一数据框的异常多线图

2hh7jdfx  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(120)

这是疯狂的-我已经读了这么多的"建议",仍然卡住,所以有一些可能是非常简单的-但是...
数据显示
标题(new_df)员工月份2013年1月13324日2013年2月13470日2013年3月13740日2013年4月14074日2013年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是堆叠的。
我们需要一个解决方案。谢谢。
这是疯狂的-我已经读了这么多的"建议",仍然卡住,所以有一些可能是非常简单的-但是...
数据显示
标题(new_df)员工月份2013年1月13324日2013年2月13470日2013年3月13740日2013年4月14074日2013年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是堆叠的。
我们需要一个解决方案。谢谢。

slmsl1lt

slmsl1lt1#

您说您希望绘图中总共有10行,每一年一行。但是,您的 Dataframe 中每一年的值都有多行(例如,在您提供的示例中,2013年有6行)。因此,听起来您想通过monthyear对数据进行summarize,这可以使用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()

相关问题