2013-04-17 39 views
5

Tôi đang cố gắng tạo một phân tán trong ggplot2 với ánh xạ kích thước đến biến thứ ba và đường nét density2d. Có vẻ như truyền thuyết đang bị nhầm lẫn bởi việc bao gồm các đường nét density2d.Chú thích không bình thường bằng cách sử dụng ánh xạ kích thước và mật độ2d

Ví dụ, đoạn mã sau hoạt động:

library('ggplot2') 
set.seed(1) 
x=rnorm(100); y=rnorm(100,sd=10); z=seq(1,10,length.out=100) 
dd=data.frame(x=x,y=y,z=z) 
ggplot(dd,aes(x,y,size=z))+geom_point() 

plot looks normal

Nhưng bây giờ, lưu ý các huyền thoại cư xử bất thường khi tôi thêm trong một cuộc gọi đến stat_density2d(). Đặc biệt, truyền thuyết âm mưu cho thấy khối màu xanh thay vì vòng tròn đen:

ggplot(dd,aes(x,y,size=z))+geom_point()+stat_density2d() 

plot legend shows blue blocks instead of black circles

Trả lời

6

Như size= là một trong những thẩm mỹ, bạn có thể thiết lập cho stat_density2d() và trong trường hợp này nó được thiết lập trong ggplot() cuộc gọi, huyền thoại được thực hiện cho cả hai dòng và điểm (điểm được ẩn dưới dòng trong chú thích là geom_point() được gọi trước stat_density2d()). Để xóa các đường màu xanh khỏi chú giải, bạn có thể đặt thủ công size=0.5 (hoặc một số giá trị khác) bên trong stat_density2d() và sau đó chú thích sẽ chính xác.

ggplot(dd,aes(x,y,size=z))+geom_point()+stat_density2d(size=0.5) 

enter image description here

+2

(+1) Tôi không chắc chắn nếu điều này là hữu ích, nhưng hoán đổi thứ tự cho thấy cả hai truyền thuyết (về cơ bản các vòng tròn đầy được ẩn đằng sau hình chữ nhật): 'ggplot (đ, aes (x, y, size = z)) + stat_density2d() + geom_point() ' – Arun

+1

@ Chạy đúng, bạn đúng - cả hai truyền thuyết đều được vẽ (chỉ ẩn). Giải pháp cho thấy làm thế nào để thoát khỏi chiều rộng dòng trong huyền thoại (vì chúng không có ý nghĩa trong trường hợp này) –

+0

Tuyệt vời, cảm ơn! – js86

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