2012-05-01 8 views
6

tengo algunos datos raspadas y transformados a la web en esta forma:Cree que no se solapan parcela de áreas apiladas con 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 

estoy tratando de gráfico creado un área apilada, similar a la de aquí: Making a stacked area plot using ggplot2

Cuando hago un

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

Obtengo esta extraña tabla.

Quiero que las áreas no se crucen entre sí, y que se llene todo el lienzo ya que el porcentaje total para cada factor episode es igual al 100%.

Respuesta

8

Eso fue interesante. Que se está perdiendo una sola fila (Carril no apareció en las hojas de té ...?), Así

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

parece funcionar. Pero también tenía que estar en el orden correcto, y no estoy del todo seguro de por qué.

+0

Muchas gracias. Todavía tengo curiosidad sobre por qué el mío no funcionó. – Idr

+0

@idris La fila que falta, lo entiendo (aunque puede tener sentido que "signifique" que ese valor sea 0, creo que sería peligroso que ggplot lo asuma globalmente). El orden es probablemente porque está usando geom_polygon debajo del capó. – joran

+2

@idris Además, debería agregar que usar 'geom_bar' podría ser más fácil, ya que supongo que se comportaría de manera más predecible, y mostraría la misma información. – joran

Cuestiones relacionadas