我有以下数据框。它详细介绍了4种不同支出情景的年度成本,每种情景均为3年。
mydf2 = data.frame( Scenario = c(1,1,1,2,2,2,3,3,3,4,4,4), Year= c(1,2,3,1,2,3,1,2,3,1,2,3),
Cost = c(140,445,847,948,847,143,554,30,44,554,89,45))
我希望能够绘制我所有场景的年度总费用:
library(ggplot2)
ggplot(mydf2, aes(x = Year, y= Cost))+ geom_line(stat="identity")
但它产生了这张糟糕的图表:
当我按年份汇总数据时,它可以工作,但我不知道如何在R中执行此操作。我必须返回Excel。如何逐年汇总数据框架以便绘制图表?新框架将如下所示:
Year Total Cost
1 2196
2 1411
3 1079
但我又要回到Excel去做了。我不知道为什么这些垂直线也会持续存在。我是R的新人,非常感谢。
答案 0 :(得分:5)
ggplot的方法是:
ggplot(mydf2, aes(x = Year, y= Cost)) + stat_summary(fun.y = sum, geom = "line")
另一个选择是使用dplyr汇总数据并将其“管道”直接输入ggplot。
library(dplyr); library(ggplot2)
mydf2 %>% group_by(Year) %>% summarise(Cost = sum(Cost)) %>%
ggplot(., aes(x = Year, y = Cost)) + geom_line(stat = "identity")
ggplot中的.
是使用%>%
传递给管道的数据。
如果您想为每个方案制作一个绘图,可以使用facet_wrap
作为示例。我不在这里使用stat_summary
,因为每个场景每年只有1个条目,即不需要聚合:
ggplot(mydf2, aes(x = Year, y= Cost)) +
geom_line(stat = "identity") +
facet_wrap( ~ Scenario)
如果您想使用单独的行绘制每个场景但在同一个图中,您可以执行以下操作:
ggplot(mydf2, aes(x = Year, y= Cost, color = factor(Scenario))) +
geom_line(stat = "identity")