Menggambar beberapa barplot pada grafik dalam R [ditutup]

12

Saya ingin memplot empat barplot pada satu grafik di R. Saya telah menggunakan kode berikut. Di sini, bagaimana menjaga legenda di atas grafik, khususnya legenda harus antara 2 dan 3 barplots. Saya juga mencoba par(mar=c(4.1,4.1,8.1,4.1)tetapi tidak ada yang berhasil. Selain itu, saya juga mencoba menjalankan legend()setelah barplot kedua, tetapi tidak ada gunanya. Legenda ini untuk keempat barplot. Tolong bantu saya dalam hal ini.

    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
sumber
1
Seseorang menandai ini dengan R
Brandon Bertelsen
@Kevin Ini adalah Q yang valid di sini; fakta bahwa R memiliki antarmuka baris perintah tidak berarti pertanyaan R adalah pertanyaan pemrograman.
@Brandon Sure; Anda dapat menggunakan pengeditan yang disarankan di masa mendatang, Anda juga akan mendapatkan 2 rep untuk saran yang diterima.

Jawaban:

17

Jawaban Dr. Mike adalah jawaban yang bagus, tetapi saya pikir saya akan memberikan solusi yang memanfaatkan fitur faceting (atau trellising) dari ggplot2dan lattice. Pertama-tama, persiapkan data sedikit:

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

dan kemudian kita dapat membuat yang berikut di ggplot2:

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

masukkan deskripsi gambar di sini

dan menggunakan lattice:

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

masukkan deskripsi gambar di sini

joran
sumber
@ Brandon - Ini misi baru saya. Pertanyaan-pertanyaan ini adalah referensi yang lebih baik untuk orang lain jika mereka berisi contoh-contoh dari basis, ggplot2 dan kisi.
joran
@Joran: Fantastis.
samarasa
Bagaimana cara mengganti nama label pada "faktor (id)" di versi ggplot?
News_is_Selection_Bias
11

Saya pikir solusi paling sederhana adalah dengan menggunakan kemampuan bawaan perintah barplot untuk menyelesaikan masalah Anda. Kode berikut melakukan apa yang saya interpretasikan yang ingin Anda lakukan.

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

merencanakan

Semoga ini menjawab pertanyaan Anda.

Mike
sumber