การวาดกราฟแท่งหลายอันบนกราฟใน R [ปิด]


12

ฉันต้องการพล็อตกราฟแท่งสี่แท่งบนกราฟเดี่ยวในอาร์ฉันใช้รหัสต่อไปนี้ ในที่นี้จะรักษาตำนานไว้บนกราฟได้อย่างไรโดยเฉพาะตำนานควรอยู่ระหว่าง 2 และ 3 barplots ฉันลองด้วยpar(mar=c(4.1,4.1,8.1,4.1)แต่ก็ไม่ประสบความสำเร็จ ยิ่งไปกว่านั้นฉันยังพยายามวิ่งlegend()ตามบาร์ปล็อตที่สอง แต่ไม่มีประโยชน์ ตำนานสำหรับทั้งสี่ barplots โปรดช่วยฉันในเรื่องนี้

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

1
มีคนแท็กนี้ด้วย R
Brandon Bertelsen

@Kevin นี่เป็นคำถามที่ถูกต้องที่นี่; ความจริงที่ว่า R มีอินเตอร์เฟสบรรทัดคำสั่งไม่ได้หมายความว่าคำถาม R คือการตั้งโปรแกรม

@ Brandon แน่นอน; คุณสามารถใช้การแก้ไขที่แนะนำในอนาคตคุณจะได้รับ 2 ตัวแทนสำหรับคำแนะนำที่ได้รับการยอมรับ

คำตอบ:


17

คำตอบดร. ไมค์เป็นหนึ่งที่ดี แต่ฉันคิดว่าฉันต้องการให้แก้ปัญหาที่ใช้ประโยชน์จาก faceting (หรือ trellising) มีของและggplot2 latticeก่อนอื่นให้เตรียมข้อมูลเล็กน้อย:

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

และจากนั้นเราสามารถทำสิ่งต่อไปนี้ในggplot2:

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

ป้อนคำอธิบายรูปภาพที่นี่

และการใช้lattice:

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

ป้อนคำอธิบายรูปภาพที่นี่


@Brandon - มันเป็นภารกิจใหม่ของฉัน คำถามเหล่านี้มีการอ้างอิงที่ดีกว่าสำหรับผู้อื่นหากพวกเขามีตัวอย่างจากฐาน ggplot2 และขัดแตะ
joran

@Joran: มหัศจรรย์
samarasa

จะเปลี่ยนชื่อฉลากบน "factor (id)" ในรุ่น ggplot ได้อย่างไร?
News_is_Selection_Bias

11

ฉันคิดว่าทางออกที่ง่ายที่สุดคือการใช้ความสามารถโดยธรรมชาติของคำสั่ง barplot เพื่อแก้ปัญหาของคุณ รหัสต่อไปนี้ทำในสิ่งที่ฉันตีความว่าคุณต้องการทำ

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

พล็อต

หวังว่านี่จะตอบคำถามของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.