Obtener un diagtwig de área astackda en R

Esta pregunta es una continuación de la pregunta anterior que hice.

Ahora tengo un caso donde también hay una columna de categoría con Prop. Entonces, el conjunto de datos se vuelve como

Hour Category Prop2 00 A 25 00 B 59 00 A 55 00 C 5 00 B 50 ... 01 C 56 01 B 45 01 A 56 01 B 35 ... 23 D 58 23 A 52 23 B 50 23 B 35 23 B 15 

En este caso, necesito hacer un diagtwig de área astackda en R con los porcentajes de estas diferentes categorías para cada día. Entonces, el resultado será similar.

  ABCD 00 20% 30% 35% 15% 01 25% 10% 40% 25% 02 20% 40% 10% 30% . . . 20 21 22 25% 10% 30% 35% 23 35% 20% 20% 25% 

Entonces ahora obtendría la parte de cada Categoría en cada hora y luego trazaré una gráfica de área astackda como esta, donde el eje x es la hora y el eje y el porcentaje de Prop2 para cada categoría dado por los diferentes colores esta

Puedes usar el paquete ggplot2 de Hadley Wickham para eso.

 R> library(ggplot2) 

Un conjunto de datos de ejemplo:

 R> d <- data.frame(t=rep(0:23,each=4),var=rep(LETTERS[1:4],4),val=round(runif(4*24,0,50))) R> head(d,10) t var val 1 0 A 1 2 0 B 45 3 0 C 6 4 0 D 14 5 1 A 35 6 1 B 21 7 1 C 13 8 1 D 22 9 2 A 20 10 2 B 44 

Y luego puedes usar ggplot con geom_area :

 R> ggplot(d, aes(x=t,y=val,group=var,fill=var)) + geom_area(position="fill") 

enter image description here

Puedes usar stackpoly desde el paquete plotrix :

 library(plotrix) #create proportions table pdat <- prop.table(xtabs(Prop2~Hour+Category,Dat),margin=1) #draw chart stackpoly(pdat,stack=T,xaxlab=rownames(pdat)) #add legend legend(1,colnames(pdat),bg="#ffffff55",fill=rainbow(dim(pdat)[2])) 

Si quiere quitar los bordes, puede usar scale_x_discrete y coord_cartesian de esta manera

  p <- ggplot(d, aes(x=Date,y=Volume,group=Platform,fill=Platform)) + geom_area(position="fill") base_size <- 9 p + theme_set(theme_bw(base_size=9)) + scale_x_discrete(expand = c(0, 0)) + coord_cartesian(ylim=c(0,1)) 
Intereting Posts