Dos series de datos superpuestas en el mismo gráfico de barras/histograma

Estoy usando ggplot2 y necesito mostrar dos conjuntos de datos en el mismo histograma y necesito distinguirlos. Por el momento, solo estoy configurando el color de cada serie para que tenga una opacidad del 50% para poder ver las barras que están ocultas una detrás de la otra, pero esto está lejos de ser ideal, se ve muy feo y es bastante confuso para leer.

¿Hay alguna manera en que R pueda superponer barras de manera inteligente para que pueda usar barras completamente opacas y nunca haya una barra oculta a la vista? Aquí está mi código en este momento:

library(ggplot2)
dat <- data.frame(a=sample(10, size=100, replace=T),
                  b=sample(10, size=100, replace=T))
ggplot(dat, aes(x=a), fill=rgb(1,0,0,0.5)) + geom_histogram()
                           + geom_histogram(aes(x=b), fill=rgb(0,0,1,0.5))

salida de código para barras 50% opacas

Cualquier sugerencia es muy apreciada.

preguntado el 15 de abril de 13 a las 01:04

1 Respuestas

trabajar en formato largo y luego usar position_dodge para esquivar los contenedores superpuestos. Si desea que aún se superpongan, puede configurar alpha así como

eg

library(reshape2)
ldat <- melt(dat)


 # slight overlap
 ggplot(ldat, aes(x=value, colour = variable, fill = variable)) + 
    geom_histogram(position = position_dodge(width = 0.5), binwidth = 1, alpha =0.5)

enter image description here

# or the default value
ggplot(ldat, aes(x=value, colour = variable, fill = variable)) + 
  geom_histogram(position = 'dodge', binwidth = 1)

enter image description here

O podría usar la creación de facetas, lo que significará que su problema desaparecerá, ya que ya no está sobregrabando

ggplot(ldat, aes(x=value)) + 
  geom_histogram(binwidth=1,fill = 'grey', colour = 'black') +
  facet_grid(~variable)

enter image description here

Respondido 15 Abr '13, 02:04

¡Gracias! Supongo que tendré que ir con position_dodge. Esto todavía no parece un gráfico de calidad de publicación, pero está bien por ahora. ¡Salud! - Durand

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.