2011-05-22 37 views
26

Queridos todos, me gustaría agregar espacios entre las barras en ggplot2. Esta página ofrece una solución: http://www.streamreader.org/stats/questions/6204/how-to-increase-the-space-between-the-bars-in-a-bar-plot-in-ggplot2. Sin embargo, en lugar de usar niveles de factor para las agrupaciones del eje x, esta solución crea una secuencia numérica, x.seq, para colocar manualmente las barras y luego las escala usando el argumento ancho(). width() no funciona, sin embargo, cuando uso grupos de niveles de factores para el eje x como en el ejemplo, a continuación.Agregar espacio entre barras en ggplot2

library(ggplot2) 

Treatment <- rep(c('T','C'),each=2) 
Gender <- rep(c('M','F'),2) 
Response <- sample(1:100,4) 
df <- data.frame(Treatment, Gender, Response) 

hist <- ggplot(df, aes(x=Gender, y=Response, fill=Treatment, stat="identity")) 
hist + geom_bar(position = "dodge") + scale_y_continuous(limits = c(0, 
    100), name = "") 

¿Alguien sabe cómo obtener el mismo efecto que en el ejemplo vinculado, pero al usar agrupaciones de niveles de factores?

Saludos,

Aaron

+1

También hay que resaltar la utilidad de facetear '+ facet_grid (~ Tratamiento)' ' –

Respuesta

65

¿Es esto lo que quieres?

hist + geom_bar(width=0.4, position = position_dodge(width=0.5)) 
  • width en geom_bar determina la anchura de la barra.
  • width en position_dodge determina la posición de cada barra.

Probablemente pueda entender fácilmente su comportamiento después de jugar con ellos por un tiempo.

enter image description here

+4

width' en' geom_histogram() 'está en desuso en ggplot2 moderna (> = 2.1.0). – krlmlr

+1

¿Qué sucede si quiero mantener las barras por grupo juntas (por ejemplo, las barras 'C' y 'T' aquí) pero quiero cambiar el espaciado entre los grupos ('M' y 'F' aquí)? – user5359531

Cuestiones relacionadas