2012-08-09 50 views
10

Khi đọc các bài báo khoa học, tôi thường xuyên gặp các ô mà tại đó các điểm được jitter mà không chồng lên nhau. Tôi nghi ngờ nhiều người trong số họ được rút ra với một chương trình gọi là GraphPad Prism, nhưng chắc chắn phải có một cách để làm như vậy trong R. Mặc dù nó không phải là hoàn hảo (như với các điểm màu đỏ dưới đây) Tôi nghĩ rằng nó trông tốt hơn nhiều so với jittering ngẫu nhiên.Tránh trùng lặp khi các điểm gây nhiễu

Jittered points without overlap

Nếu ai biết làm thế nào để làm điều này, tốt nhất là sử dụng một số chức năng cơ bản, tôi sẽ rất vui khi được biết.

+4

này thường được gọi là * beeswarm cốt truyện *; có một số chức năng trong các phiên bản mới hơn của ggplot2 mà làm điều này –

+1

Ah, tốt đẹp để có được một tên trên đó. Làm cho nó dễ dàng hơn nhiều để tìm hiểu thêm. Tôi không quen thuộc với ggplot (luôn luôn được ưa thích mạng), nhưng tôi đoán tôi luôn luôn có thể đảo ngược kỹ sư một chức năng chung cho nó. Có vẻ như có một gói được gọi là [beeswarm] (http://cran.r-project.org/web/packages/beeswarm/index.html) trong CRAN cũng thực hiện nó. – Backlin

+1

Gói có liên quan cho ggplot: https://github.com/eclarke/ggbeeswarm –

Trả lời

13

Dưới đây là một giải pháp ggplot2 sử dụng geom_dotplot():

library(ggplot2) 
set.seed(1234) 

dat = data.frame(y=c(rpois(20, 4), rpois(20, 1), runif(20, 0, 20)), 
       category=rep(c("group_1", "group_2", "group_3"), c(20, 20, 20))) 

dotplot_1 = ggplot(dat, aes(x=category, y=y)) + 
      geom_dotplot(aes(fill=category), binaxis="y", 
         stackdir="center", binwidth=0.8) + 
      stat_summary(fun.y=median, fun.ymin=median, fun.ymax=median, 
         geom="crossbar", width=0.7) 

ggsave("dotplot_1.png", dotplot_1, width=6, height=4) 

enter image description here

+0

Cảm ơn, trông đẹp quá! Và cũng khá đơn giản, thậm chí có thể chữa khỏi sự nhầm lẫn ban đầu của tôi trên ggplot2 :) Tôi sẽ dính xung quanh trong một thời gian suy nghĩ, để xem nếu có ai biết làm thế nào để làm điều đó trong lưới hoặc đồ họa cơ sở. – Backlin

+0

Nhận ra [gói beeswarm] (http://cran.r-project.org/web/packages/beeswarm/index.html) Tôi đã đề cập ở trên cho phép sử dụng hệ thống đồ họa chuẩn, vì vậy tôi đã có hai cách tốt để hoàn thành nó . – Backlin

+0

Để điều chỉnh kích thước của các điểm dữ liệu, hãy thêm tùy chọn chấm vào geom_dotplot() – wint3rschlaefer

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