2015-02-25 27 views
7

tôi đang tạo ra một con số mà tôi có một dòng và sự tự tin ban nhạc xung quanh nó. Để làm điều này, tôi đang sử dụng cả hai geom_linegeom_ribbon trong ggplot2 trong R. Vấn đề là làm thế nào để đối phó với truyền thuyết. Trong đó, dấu gạch chéo được thêm vào và sau khi googling trong một thời gian khá tôi hiểu đó là một vấn đề phổ biến. Hầu hết các giải pháp tôi tìm thấy là dành cho các quán bar (ví dụ: sách dạy nấu ăn ggplot). Tôi cũng đã tìm thấy các giải pháp để ngăn chặn nó, nhưng điều đó đã không làm việc cho tôi.Huyền thoại với geom_line và geom_ribbon

Dưới đây tôi có ba lô cho thấy vấn đề này. Đầu tiên, khi tôi chỉ vẽ đường, nó có vẻ ổn. Sau đó, khi tôi thêm phần ribbon của cốt truyện, các dấu gạch chéo được thêm vào. Cốt truyện thứ ba là làm thế nào tôi muốn nó nhìn (thanh các dấu gạch chéo, rõ ràng). Làm thế nào để đạt được điều này?

enter image description here

Edit: Để được rõ ràng, những gì tôi muốn là những gì tôi có trong hình sau (mà tôi cố định sử dụng MS Paint):

enter image description here

library(ggplot2) 
library(gridExtra) 

set.seed(1) 
y <- sin(seq(1, 2*pi, length.out = 100)) 
x <- 1:100 
plotdata <- data.frame(x=x, y=y, lower = (y+runif(100, -1, -0.5)), upper = (y+runif(100, 0.5, 1))) 
h1 <- ggplot(plotdata) + geom_line(aes(y=y, x=x, colour = "sin")) 
h2 <- h1 + geom_ribbon(aes(ymin=lower, ymax=upper, x=x, colour = "bands"), alpha = 0.3) 
h3 <- h2 + scale_colour_manual(name='', values=c("bands" = "grey", "sin" = "blue")) 

grid.arrange(h1, h2, h3) 

Trả lời

5

Bạn có thể làm cho truyền thuyết riêng biệt - một cho màu sắc của dòng và một cho điền của ribbon. Sau đó, với scale_... hãy đặt tên cho chú giải thành trống. Chỉ có vấn đề là các phím huyền thoại sẽ được tách ra.

ggplot(plotdata) + geom_line(aes(y=y, x=x, colour = "sin"))+ 
     geom_ribbon(aes(ymin=lower, ymax=upper, x=x, fill = "band"), alpha = 0.3)+ 
     scale_colour_manual("",values="blue")+ 
     scale_fill_manual("",values="grey12") 

enter image description here

1

Thử để giữ cho màu sắc bên ngoài aes, sau đó nó sẽ không hiển thị trên truyền thuyết:

h1 + geom_ribbon(aes(ymin=lower, ymax=upper, x=x), colour = "red", alpha = 0.3) 

enter image description here

+0

I * làm * muốn điều đó là trong truyền thuyết, mặc dù. Đó là vấn đề của tôi, thật không may. Tôi đã cập nhật bài đăng của mình bằng hình ảnh (MS Paint đã chỉnh sửa) về hình ảnh tôi muốn. – hejseb

2

Nếu bạn muốn hiển thị màu sắc trên truyền thuyết, bạn có thể phải nghỉ mát để thêm một vài thêm geom_line s. Không sử dụng màu sắc trong geom_ribbon và sau đó thêm upperlower dòng.

h2 <- h1 + geom_ribbon(aes(ymin=lower, ymax=upper, x=x), alpha = 0.3) + 
    geom_line(aes(x=x, y = lower, color = "bands")) + 
    geom_line(aes(x=x, y = upper, color = "bands")) 

image

EDIT: Bạn cũng có thể chỉ sử dụng một quy mô fill.

h1 <- ggplot(plotdata) + geom_line(aes(y=y, x=x, colour = "sin", fill="sin")) 
h2 <- h1 + geom_ribbon(aes(ymin=lower, ymax=upper, x=x, fill="bands"), alpha = 0.3) + 
    geom_line(aes(x=x, y = lower, color = "bands")) + 
    geom_line(aes(x=x, y = upper, color = "bands")) 
h3 <- h2 + scale_colour_manual(name='', values=c("bands" = "grey", "sin" = "blue")) + 
    scale_fill_manual(name = '', values=c("bands" = "grey12", "sin" = "grey")) 

grid.arrange(h1, h2, h3) 

image2

Bạn cũng có thể thiết lập "bands" = "transparent" trong báo cáo kết quả màu sắc, nếu bạn không muốn (hiếm khi nhìn thấy) dòng màu xám.

+0

Điều đó gần giống với những gì tôi đang hướng tới! Có cách nào để làm cho toàn bộ "dải" hộp chứa đầy bóng tối màu xám hơn không? Tôi đã cập nhật bài đăng gốc của mình với hình ảnh về nội dung tôi muốn. – hejseb

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