2017-08-04 33 views
1

私はちょうどggplotを学んでいるので、これは本当に基本的な質問です。私はスライスするいくつかの異なる品質で年ごとに集計されたデータを持っています(以下のコードはサンプルデータを生成します)。私は、いくつかの異なるチャートを表示しようとしています:特定のメトリックの全体的なものを表示し、次に、同じメトリックを品質に分けて表示するカップルですが、それは正しく行かないのです。理想的には、プロットを一度作成してから、個々のチャートのそれぞれのために、geomレイヤーを呼び出したいと思います。私はそれがコード内でどのように見えるようにするのかの例を持っています。ggplot2複数の時系列プロット

私はこれがデータ構造の問題だと思っていますが、実際には分かりません。

二次的な質問 - 私の年は整数としてフォーマットされていますが、これをここで行うのが最善の方法ですか、それらを日付に変換するべきですか?

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") 

答えて

0

私は正しく、簡単に修正できました。私はgeom_areaの代わりにstat_summaryを使用しているはずです。ここに追加する正しいレイヤーは次のとおりです。

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)) 
関連する問題