2010-03-31 5 views
13

Tôi đang cố hiển thị tần số trong phạm vi ... tốt, tôi muốn chúng ở đâu đó trong biểu đồ: dưới thanh, trong các thanh, trên thanh hoặc trong khu vực chú giải. Và tôi nhớ lại (tôi có thể sai) rằng nó có thể được thực hiện trong ggplot2. Đây có lẽ là một cách dễ dàng ... ít nhất nó có vẻ dễ dàng. Đây là mã:Hiển thị tần số cùng với vạch trong ggplot2

p <- ggplot(mtcars) 
p + aes(factor(cyl)) + geom_bar() 

Tôi có thể có tần suất được nhúng trong biểu đồ không?

Trả lời

18

geom_text là tha analog của text từ đồ họa cơ sở:

p + geom_bar() + stat_bin(aes(label=..count..), vjust=0, 
          geom="text", position="identity") 

Nếu bạn muốn điều chỉnh các y-vị trí của nhãn, bạn có thể sử dụng y= thẩm mỹ trong stat_bin: ví dụ, y=..count..+1 sẽ đặt nhãn một đơn vị phía trên thanh.

Ở trên cũng hoạt động nếu bạn sử dụng geom_textstat="bin" bên trong.

+0

Đối với nhãn, tại sao có dấu ".." trước và sau khi đếm? –

+1

'..count..' là tên của biến chứa các tần số bin mà' stat_bin' tạo tự động. Vì vậy, hai giai đoạn trước và sau đó là một phần của tên biến – Aniko

+0

Câu trả lời này đã đưa ra một lỗi cho tôi 'Lỗi: stat_count yêu cầu thiếu tính thẩm mỹ sau: x'. Tuy nhiên, thêm vào 'aes (factor (cyl))' và thay đổi 'stat_bin' thành' stat_count' như trong 'p + aes (factor (cyl)) + geom_bar() + stat_count (aes (label = .. count. .), vjust = 0, geom = "văn bản", vị trí = "danh tính") 'đã hoạt động. – steveb

0

Nếu bạn không bị giới hạn đối với ggplot2, bạn có thể sử dụng văn bản từ đồ họa cơ sở hoặc? Boxed.labels từ gói plotrix.

4

Cách khắc phục khó khăn. Tôi chắc chắn có những cách tiếp cận tốt hơn.

ggplot(mtcars,aes(factor(cyl))) + 
geom_bar() + 
geom_text(aes(y=sapply(cyl,function(x) 1+table(cyl)[names(table(cyl))==x]), 
label=sapply(cyl,function(x) table(cyl)[names(table(cyl))==x]))) 
+11

Đó là thực tế chung là tốt để tạo ra _outside_ dữ liệu của bạn mã âm mưu của mình. Và nó là _never_ một ý tưởng hay để đưa dữ liệu vào ánh xạ thẩm mỹ. – hadley

0

Khi muốn thêm thông tin khác nhau các công việc sau:

ggplot(mydata, aes(x=clusterSize, y=occurence)) + 
geom_bar() + geom_text(aes(x=clusterSize, y=occurence, label = mydata$otherinfo)) 
+0

Bạn có thể, xin vui lòng, nhân rộng câu trả lời này bằng cách cung cấp một ví dụ đề cập đến dữ liệu có sẵn trong gói 'datasets' (hoặc gói khác có sẵn trong repo CRAN)? Tôi nghi ngờ rằng barplot có thể được rút ra với 'y' biến quy định" như là "... – aL3xa