2015-04-22 115 views
2

這裏是我的數據結構:geom_area不堆疊(ggplot)

Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 60 obs. of 3 variables: 
$ year  : num 1990 1990 1991 1992 1993 ... 
$ studyType: Factor w/ 4 levels "meta","observational",..: 2 3 3 1 3 3 3 1 3 3 ... 
$ N  : int 1 4 4 1 2 5 3 1 2 6 ... 

我嘗試使用下面的代碼進入一個堆疊面積圖這樣的:

ggplot(evidence.summary.main, aes(x = year, y = N, fill=studyType)) + 
geom_area(alpha=.80) 

任何想法爲什麼我無法正確堆疊這個?

enter image description here

而且我的數據從dput

structure(list(year = c(1990, 1990, 1991, 1992, 1993, 1994, 1995, 
1996, 1996, 1997, 1997, 1998, 1998, 1999, 1999, 2000, 2000, 2000, 
2001, 2001, 2002, 2002, 2003, 2003, 2003, 2004, 2004, 2004, 2005, 
2005, 2006, 2006, 2006, 2007, 2007, 2007, 2007, 2008, 2008, 2008, 
2009, 2009, 2009, 2009, 2010, 2010, 2010, 2010, 2011, 2011, 2011, 
2011, 2012, 2012, 2012, 2012, 2013, 2013, 2013, 2013), studyType = structure(c(2L, 
3L, 3L, 1L, 3L, 3L, 3L, 1L, 3L, 3L, 4L, 1L, 3L, 1L, 3L, 1L, 2L, 
3L, 1L, 3L, 1L, 3L, 1L, 3L, 4L, 1L, 2L, 3L, 3L, 4L, 1L, 3L, 4L, 
1L, 2L, 3L, 4L, 1L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 
2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), .Label = c("meta", 
"observational", "rct", "sr"), class = "factor"), N = c(1L, 4L, 
4L, 1L, 2L, 5L, 3L, 1L, 2L, 6L, 1L, 2L, 2L, 1L, 5L, 3L, 1L, 1L, 
4L, 6L, 1L, 10L, 2L, 6L, 3L, 1L, 2L, 8L, 12L, 2L, 3L, 12L, 4L, 
3L, 1L, 9L, 5L, 4L, 7L, 4L, 4L, 1L, 16L, 8L, 9L, 2L, 17L, 7L, 
6L, 2L, 15L, 16L, 3L, 2L, 19L, 14L, 8L, 2L, 28L, 20L)), row.names = c(NA, 
-60L), .Names = c("year", "studyType", "N"), class = c("tbl_df", 
"tbl", "data.frame")) 
+3

你可以輸入你的數據框嗎? –

+2

這可能是因爲你缺少一些數據。例如,在某些年份,您缺少「觀察」數據(可能對其他一些studyType也是如此,我沒有檢查100%)。如果你用缺失的數據填充你的數據框(例如設置爲0),它可能會有所幫助。 – untitled

回答

1

我同意@untitled,這個問題是有可能的遺漏值。我一直在想必須有一個更清潔的轉型,但所有我能想出是這樣的

ggplot(as.data.frame(xtabs(N~year+studyType, evidence.summary.main)), 
    aes(x = as.numeric(year), y = Freq, fill=studyType)) + 
geom_area(alpha=.80) 

enter image description here

所以我用xtabs()在零基本上填補所有丟失的年/研究組合。