I have some data scraped and processed from the web in this form:
>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
I'm trying to created a stacked area chart, similar to the one here: Making a stacked area plot using ggplot2
When I do a
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')
I get this bizarre chart.
I want the areas not to cross eachother, and to fill the entire canvas as the total percent for each episode
factor equals 100%.
That was interesting. You're missing a single row (Lane didn't appear in Tea Leaves...?), so
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')
appears to work. But it had to be in the right order as well, and I'm not entirely sure why.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With