2016-06-19 29 views
7

Tôi đang cố gắng vẽ nhiều tập dữ liệu trên cùng một ô. Ví dụ, dưới đây, tôi có hai bộ thí nghiệm với cài đặt: "P-0.1" và "P-0.2" được biểu thị bằng hệ số B. Đối với mỗi thử nghiệm, tôi có ba giá trị đầu ra "P", "Q", "O ", như được biểu thị bằng hệ số A. Tôi đã nhóm các thí nghiệm bằng màu tô, và nhóm các kết quả đầu ra theo màu sắc, kiểu dáng và hình dạng.Nhiều truyền thuyết với ggplot2

library(ggplot2) 

dat <- data.frame(
    A = factor(c("O", "O", "P", "P", "Q", "Q", "O", "O", "P", "P", "Q", "Q"), levels=c("O", "O", "P", "P", "Q", "Q","O", "O", "P", "P", "Q", "Q")), 
    B = factor(c("P-0.1", "P-0.1", "P-0.1", "P-0.1","P-0.1", "P-0.1", "P-0.2", "P-0.2", "P-0.2", "P-0.2", "P-0.2", "P-0.2"), levels = c("P-0.1", "P-0.1", "P-0.1", "P-0.1","P-0.1", "P-0.1", "P-0.2", "P-0.2", "P-0.2", "P-0.2", "P-0.2", "P-0.2")), 
    X = c(0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1), 
    Y = c(10, 15, 12, 13, 9, 14, 30, 20, 32, 21, 27, 19) 
) 

p = ggplot(data=dat, aes(x=X, y=Y, colour=A, size=A, shape=A, linetype=A, fill=B, group=interaction(A,B))) + geom_point() + geom_line() + theme_bw() 
p = p + geom_point(size=4, alpha=0) + geom_point(size=4, show.legend=FALSE) + guides(shape = guide_legend(nrow=3, byrow = TRUE, keywidth = 1.5, keyheight = 1), colour = guide_legend(override.aes = list(alpha=1))) 

p = p + scale_shape_manual(name="", values=c(21,22,23)) 
p = p + scale_colour_manual(name="", values=c("#005ccc", "#007700", "#56B4E9")) 
p = p + scale_linetype_manual(name="", values=c(0,0,1)) 
p = p + scale_size_manual(name="", values = c(1, 1, 1)) 
p = p + scale_fill_manual(name="", values = c("red", "blue")) 

Đoạn mã trên vẽ hình đúng, nhưng tôi nhận được vòng tròn đen trong chú giải cho tỷ lệ lấp đầy, nơi tôi đang mong các hộp màu đỏ và xanh dương. Làm thế nào để sửa lỗi này?

Reference Figure

+1

này làm việc cho tôi 'p = p + scale_fill_manual (name = "", giá trị = c ("đỏ", "xanh"), guide = guide_legend (override.aes ​​= aes (hình dạng = 21))) '. Thông tin thêm [tại đây] (https://github.com/hadley/ggplot2/issues/857) – Tung

+0

Cảm ơn bạn đã chỉ ra điều này. Điều này không hoạt động. – max

+1

Để nhận các hộp màu đỏ và xanh dương, bạn có thể muốn sử dụng 'override.aes ​​= list (hình = 22, size = 5)' – Jaap

Trả lời

2

Như đã đề cập trong các ý kiến, tôi cập nhật với

p = p + scale_fill_manual (name = "", giá trị = c ("đỏ", "xanh"), hướng dẫn = guide_legend (override.aes ​​= list (hình = 22, size = 5)))

để lấy hình ảnh mong muốn. Dường như:

enter image description here

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