theme manipulation ggtitle ggplot change r ggplot2

r - manipulation - ggtitle size



Ancho del cuadro de caja en ggplot con grupos clasificados cruzados (3)

Estoy haciendo diagramas de caja con ggplot con datos que están clasificados por 2 variables de factores. Me gustaría que los tamaños de los recuadros reflejen el tamaño de la muestra a través de varwidth = TRUE pero cuando hago esto, los recuadros se superponen.

1) Algunos datos de muestra con una estructura de 3 x 2

data <- data.frame(group1= sample(c("A","B","C"),100, replace = TRUE),group2= sample(c("D","E"),100, replace = TRUE) ,response = rnorm(100, mean = 0, sd = 1))

2) diagramas de caja predeterminados: ggplot sin ancho variable

ggplot(data = data, aes(y = response, x = group1, color = group2)) + geom_boxplot()

Me gusta cómo se muestra el primer nivel de agrupación.
Ahora trato de agregar anchos variables ...

3) ... y lo que obtengo cuando varwidth = TRUE

ggplot(data = data, aes(y = response, x = group1, color = group2)) + geom_boxplot(varwidth = T)

Esta superposición parece ocurrir si utilizo color = group2 o group = group2 tanto en la llamada principal a ggplot como en la declaración geom_boxplot . Alborotar con position_dodge tampoco parece ayudar.

4) Una solución que no me gusta visualmente es hacer factores únicos combinando mi grupo1 y mi grupo2

data$grp.comb <- paste(data$group1, data$group2) ggplot(data = data, aes(y = response, x = grp.comb, color = group2)) + geom_boxplot()

Prefiero agrupar las cosas para reflejar la clasificación cruzada

5) El camino a seguir: quisiera a) averiguar cómo hacer que varwidth = TRUE no haga que los recuadros se superpongan o b) ajustar manualmente el espacio entre los grupos combinados para que los recuadros dentro del primer nivel de agrupación sean más juntos.


Creo que tu problema se puede resolver mejor usando facet_wrap .

library(ggplot2) data <- data.frame(group1= sample(c("A","B","C"),100, replace = TRUE), group2= sample(c("D","E"),100, replace = TRUE) ,response = rnorm(100, mean = 0, sd = 1)) ggplot(data = data, aes(y = response, x = group2, color = group2)) + geom_boxplot(varwidth = TRUE) + facet_wrap(~group1)

Lo que da:


Esta pregunta se ha respondido aquí ggplot aumentar la distancia entre los diagramas de caja

La respuesta implica usar el argumento position = position_dodge() de geom_boxplot() .

Para tu ejemplo:

data <- data.frame(group1= sample(c("A","B","C"),100, replace = TRUE), group2= sample(c("D","E"),100, replace = TRUE) ,response = rnorm(100, mean = 0, sd = 1)) ggplot(data = data, aes(y = response, x = group1, color = group2)) + geom_boxplot(position = position_dodge(1))


Una actualización reciente de ggplot2 hace que el código provisto por @N Brouwer en (3) funcione de la manera esperada:

# library(devtools) # install_github("tidyverse/ggplot2") packageVersion("ggplot2") # works with v2.2.1.9000 library(ggplot2) set.seed(1234) data <- data.frame(group1= sample(c("A","B","C"), 100, replace = TRUE), group2= sample(c("D","E"), 100, replace = TRUE), response = rnorm(100, mean = 0, sd = 1)) ggplot(data = data, aes(y = response, x = group1, color = group2)) + geom_boxplot(varwidth = T)

(Soy un nuevo usuario y no puedo publicar imágenes en línea) fig 1