Desenhando vários gráficos de barras em um gráfico em R [fechado]

12

Gostaria de plotar quatro gráficos de barras em um único gráfico em R. Eu usei o código a seguir. Aqui, como manter uma legenda no topo do gráfico, especificamente a legenda deve estar entre 2 e 3 gráficos de barras. Eu também tentei com, par(mar=c(4.1,4.1,8.1,4.1)mas não há sucesso. Além disso, também tentei correr legend()após o segundo gráfico de barras, mas não adianta. A lenda é para todos os quatro gráficos de barras. Por favor, me ajude com isto.

    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
fonte
1
Alguém marcar isso com R
Brandon Bertelsen
@ Kevin Este é um Q válido aqui; o fato de R ter interface de linha de comando não significa que nenhuma pergunta sobre R seja de programação.
@Brandon Sure; você pode usar as edições sugeridas no futuro e também receberá 2 representantes por sugestão aceita.

Respostas:

17

A resposta do Dr. Mike é boa, mas pensei em fornecer soluções que tirassem proveito dos recursos facetadores (ou trellising) de ggplot2e lattice. Primeiro prepare ligeiramente os dados:

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

e então podemos fazer o seguinte em ggplot2:

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

insira a descrição da imagem aqui

e usando lattice:

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

insira a descrição da imagem aqui

joran
fonte
@Brandon - É a minha nova missão. Essas perguntas são melhores referências para outras pessoas se elas contêm exemplos de base, ggplot2 e retículo.
joran
@Joran: Fantástico.
Samara #
Como renomear o rótulo em "fator (id)" na versão ggplot?
News_is_Selection_Bias
11

Acho que a solução mais simples é usar os recursos inerentes ao comando barplot para resolver seu problema. O código a seguir faz o que eu interpreto que você deseja fazer.

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))

enredo

espero que isso responda sua pergunta.

Dr. Mike
fonte