2012-05-01 90 views
6

堆積面積情節我有一些數據以這種形式刮取從Web處理:創建非重疊與GGPLOT2

>head(dat) 
    count name   episode percent 
1 309 don 01-a-little-kiss 0.27081507 
2 220 megan 01-a-little-kiss 0.19281332 
3 158 joan 01-a-little-kiss 0.13847502 
4 113 peggy 01-a-little-kiss 0.09903593 
5 107 roger 01-a-little-kiss 0.09377739 
6 81 pete 01-a-little-kiss 0.07099036 

我試圖創建一個堆積面積圖,類似這裏的一個: Making a stacked area plot using ggplot2

當我做了

require(RCurl) 
require(ggplot2) 
link <- getURL("http://dl.dropbox.com/u/25609375/so_data/final.txt") 
dat <- read.csv(textConnection(link), sep=' ', header=FALSE, 
      col.names=c('count', 'name', 'episode')) 

dat <- ddply(dat, .(episode), transform, percent = count/sum(count)) 

ggplot(dat, aes(episode, percent, group=name)) + 
    geom_area(aes(fill=name, colour=name), position='stack') 

enter image description here

我得到這個奇怪的圖表。

我希望區域不要相互交叉,並填充整個畫布,因爲每個episode因子的總百分比等於100%。

回答

8

這是有趣的。你錯過了一個單行(裏並沒有出現在茶葉......?),所以

dat2 <- rbind(dat,data.frame(count = 0,name = 'lane', 
        episode = '02-tea-leaves',percent = 0)) 

ggplot(arrange(dat2,name,episode), aes(x = episode,y = percent)) + 
    geom_area(aes(fill=name,group = name), position='stack') 

enter image description here

似乎工作。但它也必須以正確的順序進行,我不完全確定爲什麼。

+0

非常感謝。我仍然很好奇我的爲什麼沒有工作。 – Idr

+0

@idris我理解的缺失行(儘管「意味着」該值爲0,我認爲讓ggplot假設爲全局將是危險的)。排序可能是因爲它在引擎蓋下使用了geom_polygon。 – joran

+2

@idris另外,我應該補充說,使用'geom_bar'可能會更容易一些,因爲我預計它會表現得更加可預測,並且會顯示相同的信息。 – joran