使用ggplot2创建非重叠堆积区域图

Idr*_*Idr 7 r 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
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个堆积区域图表,类似于这里的图表:使用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')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我得到了这张奇怪的图表.

我希望这些区域不要相互交叉,并填充整个画布,因为每个episode因子的总百分比等于100%.

jor*_*ran 9

这很有趣.你错过了一行(Lane没有出现在Tea Leaves中??),所以

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')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

似乎工作.但它必须也是正确的顺序,我不完全确定原因.

  • @idris另外,我应该补充一点,使用`geom_bar`可能会更容易,因为我预计它会表现得更加可预测,并会显示相同的信息. (2认同)