R ggplot2多时间序列图

R ggplot2多时间序列图,r,ggplot2,R,Ggplot2,我只是在学习ggplot,如果这是一个非常基本的问题,我很抱歉。我有一些数据,这些数据是按年份聚合的,有一些不同的质量可以切片(下面的代码将生成示例数据)。我试着展示几个不同的图表:一个显示给定指标的总体情况,然后一对显示相同指标的图表在质量上分开,但这并不正确。理想情况下,我希望绘制一次图,然后为每个单独的图表调用geom层。我也有我希望它在代码中看起来如何的例子 我开始认为这是一个数据结构问题,但我真的无法理解 第二个问题-我的年份被格式化为整数,这是最好的方式,还是我应该把它们转换成日期

我只是在学习ggplot,如果这是一个非常基本的问题,我很抱歉。我有一些数据,这些数据是按年份聚合的,有一些不同的质量可以切片(下面的代码将生成示例数据)。我试着展示几个不同的图表:一个显示给定指标的总体情况,然后一对显示相同指标的图表在质量上分开,但这并不正确。理想情况下,我希望绘制一次图,然后为每个单独的图表调用geom层。我也有我希望它在代码中看起来如何的例子

我开始认为这是一个数据结构问题,但我真的无法理解

第二个问题-我的年份被格式化为整数,这是最好的方式,还是我应该把它们转换成日期

library(data.table)
library(ggplot2)

#Generate Sample Data - Yearly summarized data
BaseData <- data.table(expand.grid(dataYear = rep(2010:2017),
                                   Program = c("A","B","C"),
                                   Indicator = c("0","1")))

set.seed(123)
BaseData$Metric1 <- runif(nrow(BaseData),min = 10000,100000)
BaseData$Metric2 <- runif(nrow(BaseData),min = 10000,100000)
BaseData$Metric3 <- runif(nrow(BaseData),min = 10000,100000)


BP <- ggplot(BaseData, aes(dataYear,Metric1))

BP + geom_area()  #overall Aggregate
BP + geom_area(position = "stack", aes(fill = Program)) #Stacked by Program
BP + geom_area(position = "stack", aes(fill = Indicator)) #stacked by Indicator

#How I want them to look

##overall Aggregate
BP.Agg <- BaseData[,.(Metric1 = sum(Metric1)),
                   by = dataYear]

ggplot(BP.Agg,aes(dataYear, Metric1))+geom_area()


##Stacked by Program
BP.Pro <- BaseData[,.(Metric1 = sum(Metric1)),
                   by = .(dataYear,
                          Program)]

ggplot(BP.Pro,aes(dataYear, Metric1, fill = Program))+geom_area(position = "stack")


##stacked by Indicator
BP.Ind <- BaseData[,.(Metric1 = sum(Metric1)),
                   by = .(dataYear,
                          Indicator)]

ggplot(BP.Ind,aes(dataYear, Metric1, fill = Indicator))+geom_area(position = "stack")
库(data.table)
图书馆(GG2)
#生成样本数据-年度汇总数据

BaseData我是对的,这是一个简单的修复方法。我应该使用stat_summary而不是geom_area,以下是要添加的正确图层:

BP + stat_summary(fun.y = sum, geom = "area")
BP + stat_summary(fun.y = sum, geom = "area", position = "stack", aes(fill = Program, group = Program))
BP + stat_summary(fun.y = sum, geom = "area", position = "stack", aes(fill = Indicator, group = Indicator))

我是对的,这很容易解决。我应该使用stat_summary而不是geom_area,以下是要添加的正确图层:

BP + stat_summary(fun.y = sum, geom = "area")
BP + stat_summary(fun.y = sum, geom = "area", position = "stack", aes(fill = Program, group = Program))
BP + stat_summary(fun.y = sum, geom = "area", position = "stack", aes(fill = Indicator, group = Indicator))