2012-05-25 24 views
6

Tôi đang cố gắng lấy một vài ô trên biểu đồ chia sẻ một chú giải chung bằng cách sử dụng facet_wrap(). Các ô chứa 4 ước tính mật độ được xây dựng bằng cách sử dụng geom_density(). Đây là một ví dụ tối thiểu về dữ liệu trông như thế nào. Một mật độ được ước tính cho mỗi mức của bộ ước lượng và một lô khác nhau được vẽ cho mỗi giá trị của xp.Nhiều ô có nhiều mật độ trong ggplot2

> esti 
    estimator  value   xp 
1  OLS Oracle 0.35757317 N= 10 T= 100 
2  OLS Oracle 0.50540655 N= 10 T= 100 
3  OLS Full 0.02276872 N= 10 T= 100 
4  OLS Full 0.53616020 N= 10 T= 100 
5   Lasso 0.00000000 N= 10 T= 100 
6   Lasso 0.30448578 N= 10 T= 100 
7 Adaptive Lasso 0.00000000 N= 10 T= 100 
8 Adaptive Lasso 0.49949267 N= 10 T= 100 
9  OLS Oracle 0.48392914 N= 10 T= 500 
10  OLS Oracle 0.53685915 N= 10 T= 500 
11  OLS Full 0.50565482 N= 10 T= 500 
12  OLS Full 0.61407003 N= 10 T= 500 
13   Lasso 0.38342782 N= 10 T= 500 
14   Lasso 0.52012928 N= 10 T= 500 
15 Adaptive Lasso 0.47951875 N= 10 T= 500 
16 Adaptive Lasso 0.53222172 N= 10 T= 500 

tôi có thể xây dựng một cốt truyện với bốn mật độ:

library('ggplot2') 
ggplot(data=esti,aes(x=value,colour=estimator)) + geom_density() 

Hoặc hai tấm với một mật độ trong mỗi:

ggplot(data=esti,aes(x=value)) + geom_density() +facet_wrap(~xp,scales='free_y') 

Tuy nhiên hai cùng không hoạt động và kết quả trong một lỗi:

> ggplot(data=esti,aes(x=value,colour=estimator)) + geom_density() +facet_wrap(~xp,scales='free_y') 
Error in UseMethod("scale_dimension") : 
    no applicable method for 'scale_dimension' applied to an object of class "NULL" 

Tôi đã thử các giá trị khác nhau cho quy mô, hoặc bỏ qua nó hoàn toàn, không có may mắn. Tôi đã cố gắng theo dõi đối tượng nào đang được áp dụng cho 'scale_dimension', cũng không có may mắn. Ai có thể khai sáng cho tôi không?

+2

Chỉ cần một đoán, nhưng nó có thể có cái gì để làm với thực tế là bạn đang tính toán mật độ chỉ trên hai giá trị cho mỗi nhóm? Khi tôi tạo một cốt truyện tương tự bằng cách sử dụng một tập dữ liệu lớn hơn, tôi không nhận được lỗi đó. – joran

+0

Cảm ơn bạn đã trả lời rằng đó là vấn đề khi sử dụng 'geom_density()'. Vấn đề vẫn giữ nguyên khi tôi cố gắng sử dụng 'geom_line (stat = 'density')' mặc dù ... –

+2

Nhưng .... vấn đề là như nhau, phải không? Bạn vẫn đang tính toán mật độ chỉ trên hai giá trị. – joran

Trả lời

2

Vì tôi không thể để lại nhận xét để đề nghị thứ hai Joran của (ví dụ, tôi không có đủ uy tín), đây là một câu trả lời:

Bằng cách đi từ

ggplot(data=esti,aes(x=value,colour=estimator)) + geom_density() 

để

ggplot(data=esti,aes(x=value,colour=estimator)) 
+ geom_density() +facet_wrap(~xp,scales='free_y') 

chỉ còn 2 điểm dữ liệu cho mỗi cặp ước tính/xp. Dường như, điều này là không đủ để tính toán mật độ. Ví dụ, các dòng mã sau đây làm việc (lưu ý data=rbind(esti,esti))

ggplot(data=rbind(esti,esti),aes(x=value,colour=estimator)) 
+ geom_density() +facet_wrap(~xp,scales='free_y') 

Ngoài ra, nếu bạn thay thế geom_density bởi geom_bar, nó hoạt động

ggplot(data=esti,aes(x=value,colour=estimator)) 
+ geom_bar() +facet_wrap(~xp,scales='free_y') 
Các vấn đề liên quan