velas varias torta superponer graficos grafico graficas graficar ggplot con como barras avanzados r ggplot2

varias - ggplot2-gráfico de barras con apilar y esquivar



superponer graficas en r ggplot (3)

Estoy tratando de crear una gráfica de barras usando ggplot2 donde estoy apilando una variable y esquivando otra.

Aquí hay un conjunto de datos de ejemplo:

df=data.frame( year=rep(c("2010","2011"),each=4), treatment=rep(c("Impact","Control")), type=rep(c("Phylum1","Phylum2"),each=2), total=sample(1:100,8))

Me gustaría crear una gráfica de barras donde x=treatment , y=total , la variable apilada es de type y la variable esquivada es el year . Por supuesto que puedo hacer una o la otra:

ggplot(df,aes(y=total,x=treatment,fill=type))+geom_bar(position="dodge",stat="identity") ggplot(df,aes(y=total,x=treatment,fill=year))+geom_bar(position="dodge",stat="identity")

¡Pero no ambos! Gracias a cualquiera que pueda dar consejos.


Aquí hay una toma alternativa usando facetado en lugar de esquivar:

ggplot(df, aes(x = year, y = total, fill = type)) + geom_bar(position = "stack", stat = "identity") + facet_wrap( ~ treatment)

Con el cambio sugerido por Tyler:


Lo más cercano que puede obtener es dibujando un borde alrededor de las barras dodged para resaltar los valores de type apilados.

ggplot(df, aes(treatment, total, fill = year)) + geom_bar(stat="identity", position="dodge", color="black")


Puede utilizar la interaction(year, treatment) como la variable del eje x como alternativa a dodge .

library(tidyverse) df=data.frame( year=rep(c("2010","2011"),each=4), treatment=rep(c("Impact","Control")), type=rep(c("Phylum1","Phylum2"),each=2), total=sample(1:100,8)) %>% mutate(x_label = factor(str_replace(interaction(year, treatment), ''//.'', '' / ''), ordered=TRUE)) ggplot(df, aes(x=x_label, y=total, fill=type)) + geom_bar(stat=''identity'') + labs(x=''Year / Treatment'')

Creado en 2018-04-26 por el paquete reprex (v0.2.0).