我以这种形式从网上抓取并处理了一些数据:
>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')
我得到这张离奇的图表。
我希望这些区域彼此不交叉,并填充整个画布,因为每个
episode
因子的总百分比等于100%。 最佳答案
那很有趣。您错过了一行(车道没有出现在“茶叶...”中),所以
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')
似乎起作用。但这也必须以正确的顺序进行,我不确定为什么。
关于r - 使用ggplot2创建不重叠的堆积面积图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10393269/