2009-10-06 55 views
7

Tôi có ba tập dữ liệu với độ dài khác nhau và tôi muốn vẽ các hàm mật độ của cả ba trên cùng một ô. Đây là thẳng về phía trước với đồ họa cơ sở:Vẽ các hàm mật độ được xác định trước bằng ggplot và R

n <- c(rnorm(10000), rnorm(10000)) 
a <- c(rnorm(10001), rnorm(10001, 0, 2)) 
p <- c(rnorm(10002), rnorm(10002, 2, .5)) 

plot(density(n)) 
lines(density(a)) 
lines(density(p)) 

nào mang lại cho tôi một cái gì đó như thế này:

alt text http://www.cerebralmastication.com/wp-content/uploads/2009/10/density.png

Nhưng tôi thực sự muốn làm điều này với GGPLOT2 vì tôi muốn thêm các tính năng khác mà chỉ có có sẵn với GGPLOT2. Dường như GGPLOT thực sự muốn lấy dữ liệu thực nghiệm của tôi và tính mật độ cho tôi. Và nó mang lại cho tôi một bó môi vì bộ dữ liệu của tôi có độ dài khác nhau. Vậy làm cách nào để tôi có được ba mật độ này để vẽ trong GGPLOT2?

+0

Chỉ cần tự hỏi ... tại sao bạn luôn tận dụng ggplot2? –

+0

Tôi thực sự không ... đó là ngón tay nhỏ của tôi. Nó chỉ nhảy qua đó và nhấn phím shift mà không có sự cho phép của tôi. :) Tôi nghĩ rằng đó là một kết quả vô thức của việc gõ rất nhiều từ viết tắt trong mũ suốt cả ngày. Tôi thực hiện một nỗ lực có ý thức để rời khỏi nó trong trường hợp thấp hơn. Tôi làm điều tương tự với plyr (ngay cả khi tôi gõ rằng tôi phải backspace và làm cho nó thấp hơn trường hợp). Hadley đã băm nhỏ của tôi cho sườn pha trộn trường hợp + gạch dưới trong tên biến của tôi trong mã của tôi. Các bạn sẽ làm cho tôi gọn gàng hơn và dễ đọc nếu tôi không cẩn thận! –

Trả lời

12

Bí quyết để hạnh phúc trong ggplot2 là đặt tất cả mọi thứ trong "dài" (hoặc những gì tôi đoán định hướng ma trận mọi người sẽ gọi là "thưa thớt") định dạng:

df <- rbind(data.frame(x="n",value=n), 
      data.frame(x="a",value=a), 
      data.frame(x="p",value=p)) 
qplot(value, colour=x, data=df, geom="density") 

Nếu bạn không muốn màu sắc:

qplot(value, group=x, data=df, geom="density") 
+0

bạn đã làm cho đêm của tôi tốt hơn rất nhiều. Tôi đã đấu tranh với điều này và không thể tìm ra. Cảm ơn bạn rất nhiều. –

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