Cách tạo sơ đồ barplot trong đó các thanh nằm cạnh nhau trong R


9

Tôi muốn tạo một bardiagram cho các dữ liệu này trong R (đọc từ tệp CVS):

Experiment_Name MetricA MetricB Just_X 2 10 Just_X_and_Y 3 20

để có sơ đồ sau:

văn bản thay thế

Tôi là người mới bắt đầu và tôi thậm chí không biết bắt đầu như thế nào.


1
? barplot đọc tệp trợ giúp đôi khi nhanh hơn đăng trên diễn đàn ...
RockScience

Trước tiên, bạn phải tìm ra rằng các barplot được tạo ra bởi chức năng barplot ... điều này không dễ dàng khi bạn không biết điều đó.

Điều này không cung cấp một câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ một tác giả, hãy để lại nhận xét bên dưới bài đăng của họ.
kjetil b halvorsen 30/11/14

Câu trả lời:


13

Tôi sẽ giả định rằng bạn có thể nhập dữ liệu của mình trong R bằng read.table()hoặc các read.csv()chức năng tay ngắn . Sau đó, bạn có thể áp dụng bất kỳ chức năng tóm tắt mà bạn muốn, ví dụ tablehoặc mean, như sau:

x <- replicate(4, rnorm(100))
apply(x, 2, mean)

hoặc là

x <- replicate(2, sample(letters[1:2], 100, rep=T))
apply(x, 2, table)

Ý tưởng là kết thúc với một ma trận hoặc bảng cho các giá trị tóm tắt bạn muốn hiển thị.

Đối với đầu ra đồ họa, hãy xem barplot()chức năng với tùy chọn beside=TRUE, ví dụ:

barplot(matrix(c(5,3,8,9),nr=2), beside=T, 
        col=c("aquamarine3","coral"), 
        names.arg=LETTERS[1:2])
legend("topleft", c("A","B"), pch=15, 
       col=c("aquamarine3","coral"), 
       bty="n")

Đối spacesố có thể được sử dụng để thêm một khoảng trắng giữa các thanh xen kẽ.

văn bản thay thế


13

Đây là phiên bản ggplot:

library(ggplot2)
df = melt(data.frame(A=c(2, 10), B=c(3, 20), 
          experiment=c("X", "X & Y")),
          variable_name="metric")

ggplot(df, aes(experiment, value, fill=metric)) + 
       geom_bar(position="dodge")

văn bản thay thế


2
Tôi hy vọng bạn không phiền, nhưng tôi đã thêm đầu ra của các lệnh của bạn.
csgillespie

@csgillespie không có vấn đề gì :)
teucer

1

Tôi muốn cập nhật câu trả lời của teucer để phản ánh việc định hình lại2.

library(ggplot2)
library(reshape2)
df = melt(data.frame(A=c(2, 10), B=c(3, 20), 
                 experiment=c("X", "X & Y")),
      variable.name="metric")

ggplot(df, aes(experiment, value, fill=metric)) + 
  geom_bar(position="dodge",stat="identity")

Lưu ý rằng câu trả lời của teucer tạo ra lỗi "Lỗi trong eval (expr, envir, encos): object 'metric' không tìm thấy" với reshape2 vì reshape2 sử dụng biến.name thay vì biến_name.

Tôi cũng thấy rằng tôi cần thêm stat = "nhận dạng" vào hàm geom_bar vì nếu không, nó đã đưa ra "Lỗi: Ánh xạ một biến vào y và cũng sử dụng stat =" bin "."

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.