Zeichnen mehrerer Balkendiagramme in einem Diagramm in R [geschlossen]

12

Ich möchte vier Balkendiagramme in einem einzelnen Diagramm in R darstellen. Ich habe den folgenden Code verwendet. Hier können Sie festlegen, dass eine Legende über dem Diagramm angezeigt wird. Insbesondere sollte die Legende zwischen 2 und 3 Balkendiagrammen liegen. Ich habe es auch mit probiert, par(mar=c(4.1,4.1,8.1,4.1)aber es gibt keinen Erfolg. Außerdem habe ich auch versucht, legend()nach dem zweiten Barplot zu rennen, aber es nützt nichts. Die Legende gilt für alle vier Barplots. Bitte hilf mir dabei.

    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
quelle
1
Jemand hat dies mit R
Brandon Bertelsen versehen.
@ Kevin Dies ist ein gültiges Q hier; Die Tatsache, dass R eine Befehlszeilenschnittstelle hat, bedeutet nicht, dass es sich bei jeder R-Frage um eine Programmierfrage handelt.
@ Brandon Sicher; Wenn Sie in Zukunft Änderungsvorschläge verwenden können, erhalten Sie auch 2 Wiederholungen für akzeptierte Vorschläge.

Antworten:

17

Dr. Mikes Antwort ist gut, aber ich dachte, ich würde Lösungen anbieten, die die Facettierungsfunktionen von ggplot2und nutzen lattice. Bereiten Sie zuerst die Daten leicht vor:

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

und dann können wir folgendes machen ggplot2:

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

Bildbeschreibung hier eingeben

und mit lattice:

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

Bildbeschreibung hier eingeben

joran
quelle
@Brandon - Es ist meine neue Mission. Diese Fragen sind bessere Referenzen für andere, wenn sie Beispiele aus base, ggplot2 und lattice enthalten.
joran
@Joran: Fantastisch.
Samarasa
Wie benenne ich das Label auf "factor (id)" in der ggplot-Version um?
News_is_Selection_Bias
11

Ich denke, die einfachste Lösung besteht darin, die inhärenten Fähigkeiten des Befehls barplot zu verwenden, um Ihr Problem zu lösen. Der folgende Code macht das, was ich interpretiere und was Sie tun möchten.

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

Handlung

Hoffe das beantwortet deine Frage.

Dr. Mike
quelle