Dibujar múltiples gráficos de barras en un gráfico en R [cerrado]

12

Me gustaría trazar cuatro gráficos de barras en un solo gráfico en R. He utilizado el siguiente código. Aquí, cómo puede mantener una leyenda en la parte superior del gráfico, específicamente, la leyenda debe estar entre 2 y 3 gráficos de barras. También probé con par(mar=c(4.1,4.1,8.1,4.1)pero no hay éxito. Además, también intenté ejecutar legend()después de la segunda gráfica de barras, pero no sirve de nada. La leyenda es para los cuatro gráficos de barras. Por favor, ayúdame en esto.

    par(mfrow=c(1,4))
    barplot(t(A), beside=T, ylim=c(-100,100),..)
    barplot(t(B), beside=T, ylim=c(-100,100),..)
    barplot(t(C), beside=T, ylim=c(-100,100),..)
    barplot(t(D), beside=T, ylim=c(-100,100),..)
    legend(...)
samarasa
fuente
1
Alguien etiqueta esto con R
Brandon Bertelsen
@Kevin Esta es una Q válida aquí; El hecho de que R tenga una interfaz de línea de comandos no significa que ninguna pregunta de R sea de programación.
@Brandon Sure; puedes usar ediciones sugeridas en el futuro, también ganarías 2 repeticiones por sugerencia aceptada.

Respuestas:

17

La respuesta del Dr. Mike es buena, pero pensé que proporcionaría soluciones que aprovechen las características de facetado (o enrejado) de ggplot2y lattice. Primero prepare los datos ligeramente:

mydata$id <- 1:nrow(mydata)
dat <- melt(mydata,id.vars = "id")

y luego podemos hacer lo siguiente en ggplot2:

ggplot(dat,aes(x=factor(id), y = value)) + 
    facet_wrap(~variable) +
    geom_bar(aes(fill = factor(id)))

ingrese la descripción de la imagen aquí

y usando lattice:

barchart(~value|variable,group = factor(id),data=dat,
         key = simpleKey(text = as.character(1:5),
                rectangles = TRUE,points = FALSE,space = "right"))

ingrese la descripción de la imagen aquí

joran
fuente
@ Brandon: es mi nueva misión. Estas preguntas son mejores referencias para otros si contienen ejemplos de base, ggplot2 y lattice.
joran
@Joran: Fantástico.
samarasa
¿Cómo cambiar el nombre de la etiqueta en "factor (id)" en la versión ggplot?
News_is_Selection_Bias
11

Creo que la solución más simple es usar las capacidades inherentes del comando barplot para resolver su problema. El siguiente código hace lo que interpreto que quieres que se haga.

mydata <- data.frame(Barplot1=rbinom(5,16,0.6), Barplot2=rbinom(5,16,0.25),
                     Barplot3=rbinom(5,5,0.25), Barplot4=rbinom(5,16,0.7))
barplot(as.matrix(mydata), main="Interesting", ylab="Total", beside=TRUE, 
        col=terrain.colors(5))
legend(13, 12, c("Label1","Label2","Label3","Label4","Label5"), cex=0.6, 
       fill=terrain.colors(5))

trama

Espero que esto responda a su pregunta.

Dr. Mike
fuente