2012-05-20 35 views
13

Lấy tín hiệu từ liên kết sau Aligning two plots with ggplot2, tôi có thể vẽ 2 biến "y" được đặt cạnh một trục x chung. Những gì tôi muốn làm bây giờ là để có thể thêm một lớp geom_point để chỉ một trong các khía cạnh. Lớp này sử dụng một tập dữ liệu khác (d3) với cùng cấu trúc như d1. Khi tôi thêm lớp, nó sẽ được sử dụng trên cả hai mặt. Có thể lớp các điểm chỉ các khía cạnh trên.Thêm một lớp địa lý cho một ô duy nhất trong ô được đánh dấu

library(ggplot2) 

x <- seq(1992, 2002, by = 2) 
d1 <- data.frame(x = x, y = rnorm(length(x))) 
xy <- expand.grid(x = x, y = x) 
d2 <- data.frame(x = xy$x, y = xy$y, z = jitter(xy$x + xy$y)) 
d3 <- data.frame(x = x, y = 3+rnorm(length(x))) 

d1$panel <- "a" 
d2$panel <- "b" 
d1$z <- d1$x 

d <- rbind(d1, d2) 

p <- ggplot(data = d, mapping = aes(x = x, y = y)) 
p <- p + facet_grid(panel ~ ., scale = "free") 
p <- p + layer(data = d1, geom = c("line"), stat = "identity") 
###*p <- p + layer(data = d3, geom = c("point"))* - This is the layer I intend to add only to the top panel 

p <- p + layer(data = d2, geom = "line", stat = "identity") 
p 
+1

câu hỏi +1, được diễn đạt tốt với ví dụ tái sản xuất –

Trả lời

8

Chỉ cần thêm cột panel để d3 với bảng điều khiển bạn muốn thêm các điểm thiết lập để. Trong trường hợp của bạn:

d3$panel = "a" 

p <- ggplot(data = d, mapping = aes(x = x, y = y)) 
p <- p + facet_grid(panel ~ ., scale = "free") 
p <- p + layer(data = d1, geom = c("line"), stat = "identity") 
p <- p + layer(data = d3, geom = c("point")) 
p <- p + layer(data = d2, geom = "line", stat = "identity") 
p 

trong đó sản lượng đầu ra chính xác:

enter image description here

Nếu cột được đề cập trong cuộc gọi đến facet_grid không có mặt, ggplot2 giả định nó cần phải được in trên tất cả các khía cạnh. Khi bạn chỉ định panel, ggplot2 sẽ tính đến nó.

+0

+1 Cảm ơn, Paul. Điều đó thật dễ dàng! Trong một câu hỏi liên quan, như trong mạng là có một cách để có được chỉ mục của số bảng điều khiển để có thể tùy chỉnh các bảng riêng lẻ (tương tự như panel.subscripts() từ mạng). –

+0

Tôi không thực sự chắc chắn những gì bạn có ý nghĩa. Tôi khuyên bạn nên tạo một câu hỏi mới, nơi bạn cung cấp thêm chi tiết và một số mã ví dụ. –

+1

ggplot2 không có số bảng điều khiển vì nó sẽ chống lại triết lý của nó; thay vào đó, bạn tham chiếu đến một bảng cho trước bởi (các) biến khuôn mặt tương ứng. – baptiste

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