2012-04-27 30 views
14

Tôi có một tập hợp dữ liệu như thế này:barplot sử dụng ggplot2

cars trucks suvs 
1   2 4 
3   5 4 
6   4 6 
4   5 6 
9   12 16 

Tôi đang cố gắng để vẽ một biểu đồ thanh cho dữ liệu này. Hiện nay, tôi có thể làm điều đó với barplot:

barplot(as.matrix(autos_data), main="Autos", 
     ylab= "Total",beside=TRUE, col=rainbow(5)) 

Tạo biểu đồ này:

Bar plot

Vì vậy, câu hỏi của tôi là: Tôi có thể sử dụng ggplot2 để vẽ một biểu đồ như vậy? Cụ thể - làm cách nào để tôi sử dụng tính năng đánh lừa hoặc các tùy chọn khác để chia biểu đồ theo các ngày trong tuần? Nếu có, làm cách nào để thực hiện điều đó? Ngoài ra, làm cách nào để sử dụng khía cạnh để tạo bố cục khác?

+5

-1 cho không làm một tìm kiếm cho "barplot ggplot2" trong hộp tìm kiếm tiện dụng trong phía trên bên phải màn hình của bạn. – Andrie

+1

Tôi cố gắng tìm kiếm trong google và trong trang web này. Trong thực tế, tôi có thể sử dụng ggplot2 để vẽ biểu đồ thanh cho dữ liệu gốc của tôi. Bởi vì ggplot2 có thể đếm số cho bạn. Vấn đề là nếu bạn đã có được kết quả đếm, làm thế nào để sử dụng ggplot2 để vẽ biểu đồ thanh giống như lệnh "barplot" chung? – boyang

+1

OK, điều đó hợp lý hơn. Bây giờ hãy thêm thông tin bổ sung đó vào câu hỏi của bạn và tôi sẽ thay đổi ý kiến ​​của tôi. Và cũng thêm một số mã mẫu, tức là hiển thị những gì bạn đã làm và nơi bạn gặp khó khăn. – Andrie

Trả lời

32

Điều này đã được hỏi nhiều lần trước đây. Câu trả lời là bạn phải sử dụng stat="identity" trong geom_bar để nói với ggplot không tóm tắt dữ liệu của bạn.

dat <- read.table(text=" 
cars trucks suvs 
1 2 4 
3 5 4 
6 4 6 
4 5 6 
9 12 16", header=TRUE, as.is=TRUE) 
dat$day <- factor(c("Mo", "Tu", "We", "Th", "Fr"), 
      levels=c("Mo", "Tu", "We", "Th", "Fr")) 

library(reshape2) 
library(ggplot2) 

mdat <- melt(dat, id.vars="day") 
head(mdat) 
ggplot(mdat, aes(variable, value, fill=day)) + 
    geom_bar(stat="identity", position="dodge") 

enter image description here

Các vấn đề liên quan