varias superponer studio lineas hacer graficos graficas como r plot ggplot2 reshape stacked-area-chart

superponer - Obtener un diagrama de área apilada en R



superponer graficas en r (3)

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]))

Esta pregunta es una continuación de la question 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 diagrama de área apilada en R con los porcentajes de estas diferentes categorías para cada día. Entonces, el resultado será similar.

A B C D 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 apilada 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


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")


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))