Vẽ nhiều barplots trên đồ thị trong R [đã đóng]


12

Tôi muốn vẽ bốn biểu đồ trên một biểu đồ trong R. Tôi đã sử dụng đoạn mã sau. Ở đây, làm thế nào có thể giữ một chú giải trên đầu biểu đồ, cụ thể là chú giải nên nằm trong khoảng từ 2 đến 3 barplots. Tôi cũng đã thử với par(mar=c(4.1,4.1,8.1,4.1)nhưng không có thành công. Hơn nữa, tôi cũng đã cố chạylegend() sau barplot thứ hai, nhưng không có sử dụng. Truyền thuyết là cho tất cả bốn barplots. Xin hãy giúp tôi trong việc này.

    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
Ai đó gắn thẻ này với R
Brandon Bertelsen

@Kevin Đây là một Q hợp lệ ở đây; thực tế là R có giao diện dòng lệnh không có nghĩa là bất kỳ câu hỏi R nào là câu hỏi lập trình.

@Brandon Chắc chắn; bạn có thể sử dụng các chỉnh sửa được đề xuất trong tương lai, bạn cũng sẽ kiếm được 2 đại diện cho đề xuất được chấp nhận.

Câu trả lời:


17

Câu trả lời của Tiến sĩ Mike là một câu hỏi hay, nhưng tôi nghĩ rằng tôi sẽ cung cấp các giải pháp tận dụng các tính năng tạo mặt (hoặc đánh dấu) của ggplot2lattice. Đầu tiên chuẩn bị dữ liệu một chút:

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

và sau đó chúng ta có thể thực hiện như sau ggplot2:

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

nhập mô tả hình ảnh ở đây

và sử dụng lattice:

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

nhập mô tả hình ảnh ở đây


@Brandon - Đó là nhiệm vụ mới của tôi. Những câu hỏi này là tài liệu tham khảo tốt hơn cho những người khác nếu chúng chứa các ví dụ từ cơ sở, ggplot2 và mạng.
joran

@Joran: Tuyệt vời.
samarasa

Làm cách nào để đổi tên nhãn trên "Fact (id)" trong phiên bản ggplot?
News_is_Selection_Bias

11

Tôi nghĩ rằng giải pháp đơn giản nhất là sử dụng các khả năng vốn có của lệnh barplot để giải quyết vấn đề của bạn. Các mã sau đây làm những gì tôi giải thích rằng bạn muốn thực hiện.

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

âm mưu

Hy vọng điều này trả lời câu hỏi của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.