2016-10-05 14 views
12

Tôi mới thành R và hiện đang học geom_bar trên phần 3.7 của r4ds.had.co.nz. Tôi chạy một mã như thế này:R - ggplot geom_bar: ý nghĩa của aes (nhóm = 1)

library(ggplot2) 
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1)) 

Sau đó, tôi có âm mưu này: click here

Vấn đề là, nếu tôi loại trừ "group = 1" phần:

library(ggplot2) 
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, y = ..prop..)) 

Cốt truyện sẽ sai, like this

Nhưng nếu tôi thay thế nhóm = 1 theo nhóm = 2 hoặc nhóm = "x", cốt truyện vẫn có vẻ chính xác. Vì vậy, tôi không hoàn toàn hiểu ý nghĩa của nhóm = 1 ở đây và cách sử dụng nó.

Trả lời

23

group="whatever" là nhóm "giả" để ghi đè hành vi mặc định, trong đó (ở đây) là nhóm theo cut và nói chung là nhóm theo biến x. Giá trị mặc định cho geom_bar là nhóm theo biến x để tính riêng số hàng trong mỗi cấp của biến x. Ví dụ: tại đây, giá trị mặc định sẽ là geom_bar để trả về số hàng có cut bằng "Công bằng", "Tốt", v.v.

Tuy nhiên, nếu chúng ta muốn tỷ lệ, thì chúng ta cần xem xét tất cả các cấp cut cùng nhau. Trong ô thứ hai, dữ liệu được nhóm đầu tiên theo cut, do đó, mỗi cấp độ của cut được xem là riêng biệt. Tỷ lệ Hội chợ trong Hội chợ là 100%, cũng như tỷ lệ Tốt trong Tốt, v.v. group=1 (hoặc group="x", v.v.) ngăn chặn điều này, sao cho tỷ lệ mỗi mức cắt sẽ liên quan đến tất cả các mức cắt.

+0

Cảm ơn bạn rất nhiều. Lời giải thích của bạn rất dễ hiểu. Tôi sẽ đào sâu hơn về điều này như vừa giải phóng khỏi nút cổ chai đã làm phiền tôi cả ngày. (Tôi upvote nhưng nó không hiển thị, không biết tại sao) – Novembrain

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