Có fewposts liên quan đến việc sử dụng các vùng tô bóng trong ggplot2, nhưng tôi không nghĩ chính xác câu trả lời cho câu hỏi của mình. Tôi có hai sườn cho các dòng trên một số điều kiện, và tôi muốn che khu vực giữa chúng. Dưới đây là ví dụ dữ liệu:r - ggplot2 - tạo vùng mờ giữa hai lớp geom_abline
dat <- data.frame(cond1=c("a","a","b","b"),
cond2=c("c","d","c","d"),
x=c(1,5),
y=c(1,5),
sl=c(1,1.2,0.9,1.1),
int=c(0,0.1,0.1,0),
slopeU=c(1.1,1.3,1.2,1.2),
slopeL=c(.9,1,0.7,1))
đây, sl
là tham số độ dốc trung bình từ một thủ tục phù hợp riêng biệt, và slopeU
và slopeL
đại diện cho các khu vực tự tin trên và dưới trên ước tính độ dốc trong từng trường hợp. Các chặn được ràng buộc là giống nhau. Các mã sau âm mưu các đường phù hợp nhất với từng điều kiện sử dụng một số faceting:
p <- ggplot(dat,aes(x=x,y=y,colour=cond1))
p <- p + facet_grid(. ~ cond2)
p <- p + geom_blank()
p <- p + geom_abline(aes(intercept=int,slope=sl,colour=cond1),data=dat)
p
Tôi muốn thêm những dòng xác định bởi intercept=int, slope=slopeU
và intercept=int, slope=slopeL
đến cốt truyện và bóng khu vực giữa chúng (ví dụ như tại alpha=.5
trong tương ứng màu cond1). Tôi nhận ra rằng với một thao tác nhỏ, tôi có thể tạo một khung dữ liệu xác định giá trị của những dòng này cho ít nhất hai giá trị x, sau đó vẽ geom_ribbon tương ứng hoặc geom_polygon để tạo vùng tô bóng, tuy nhiên tôi muốn tìm thêm giải pháp thanh lịch. Hoặc là tự xác định một số tọa độ từ các sườn dốc và chặn đường duy nhất? Làm cách nào tốt nhất tôi nên tạo khung dữ liệu bắt buộc (cần phải có nhiều hàng hơn khung gốc để tính tất cả các kết hợp điều kiện và cặp x, y).
Điều đó thật tuyệt vời; cảm ơn Joran. – tsawallis
Vì vậy, về cơ bản các công trình với vấn đề áp dụng của tôi, nhưng tôi không thể có được các màu sắc trên các khu vực bóng mờ để cond1, thậm chí bằng cách chạy giải pháp của bạn chính xác. Các vùng ruy băng đầy màu xám (ở alpha = .5) nhưng cũng có đường viền đường nét liền mảnh. Tôi làm sai ở đâu? Đây có phải là sự khác biệt phiên bản ggplot2 không? Tôi đang ở 0.9.0. Lệnh ggplot mà tôi đang sử dụng cũng giống như trong bài gốc, với các hướng dẫn 'p + ribs + (fill = guide_legend (ghi đè lên .aes = list (alpha = 0.1)))' được dán dưới đây. – tsawallis
@waldog Xin lỗi, tôi đã bỏ lỡ một chút khi sao chép + dán mã của tôi.Bạn chỉ cần thêm 'fill = cond1' vào' aes() 'hoặc trong cuộc gọi' ggplot() 'ở mức cao nhất, hoặc trong cuộc gọi' geom_ribbon' bên trong hàm. Tôi sẽ chỉnh sửa trong giây lát ... – joran