2009-10-15 38 views
10

Tôi có một số dữ liệu mà ở đó, ở một mức của một yếu tố, có một mối tương quan đáng kể. Ở cấp độ khác, không có gì cả. Vẽ các bên này rất đơn giản. Thêm một dòng cho cả hai với stat_smooth, cũng đơn giản. Tuy nhiên, tôi không muốn các dòng hoặc điền của nó hiển thị trong một trong hai khía cạnh. Có một cách đơn giản để làm điều này? Có lẽ chỉ định một màu trắng cho điền và màu sắc của một trong những dòng bằng cách nào đó?Thêm stat_smooth vào chỉ 1 khía cạnh trong ggplot2

Trả lời

28

Đừng nghĩ về việc chọn một khía cạnh, nghĩ rằng việc cung cấp một tập hợp con của dữ liệu của bạn để stat_smooth:

ggplot(df, aes(x, y)) + 
    geom_point() + 
    geom_smooth(data = subset(df, z =="a")) + 
    facet_wrap(~ z) 
3

Tất nhiên, sau này tôi đã trả lời câu hỏi của riêng mình. Mặc dù, có một cách hack-y ít hơn để làm điều này? Tôi tự hỏi liệu một người thậm chí có thể phù hợp với các chức năng khác nhau cho các bảng khác nhau hay không.

Một kỹ thuật là sử dụng + scale_fill_manual và scale_colour_manual. Chúng cho phép người ta xác định màu nào sẽ được sử dụng. Vì vậy, trong trường hợp này, giả sử bạn có

a<-qplot(x, y, facets=~z)+stat_smooth(method="lm", aes(colour=z, fill=z)) 

Bạn có thể chỉ định màu để điền và màu bằng cách sử dụng như sau. Lưu ý, màu thứ hai là rõ ràng, vì nó đang sử dụng một giá trị hex với hai con số cuối cùng đại diện cho tính minh bạch. Vì vậy, 00 = xóa.

a+stat_fill_manual(values=c("grey", "#11111100"))+scale_colour_manual(values=c("blue", "#11111100")) 
+0

Đó có vẻ là một giải pháp hợp lý. Nói chung, nếu bạn đang sử dụng các khía cạnh, bạn thực sự muốn đặt cùng một thứ trong mỗi khía cạnh. Nếu không, bạn có thể sử dụng phương pháp thay thế tốt hơn. Hãy xem câu hỏi này (và câu trả lời của tôi) để biết thêm thông tin: http://stackoverflow.com/questions/1532535/showing-multiple-axis-labels-using-ggplot2-with-facetwrap-in-r – Harlan

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