2012-05-10 30 views
5

Tôi có một ô trong R với ngày/giờ (POSIXct) trên trục X và một số dữ liệu trên trục Y.
Tôi muốn cung cấp bóng râm trên trục x trong khoảng từ 3 giờ chiều đến 6 giờ tối mỗi ngày trên trục xCung cấp độ mờ giữa các ngày trên trục x

+0

trong đồ họa cơ bản, có thể sử dụng '? Rect' (và có thể 'ngang ("usr")' để lấy giá trị y/min tối đa của ô, trong đơn vị người dùng - hoặc 'grconvertX/grconvertY') để thiết lập một loạt các hình chữ nhật tô bóng, sau đó vẽ lại dữ liệu của bạn qua chúng. Một ví dụ tái sản xuất sẽ được tốt đẹp. –

Trả lời

15

Nhiều hơn hoặc ít hơn sau những gì Brian Diggs suggests above,

#sample data 
set.seed(666) 
dat <- data.frame(x = seq(as.POSIXct('2011-03-27 00:00:00'), 
len= (n=24), by="1 hour"), y = cumsum(rnorm(n))) 
#Breaks for background rectangles 
rects <- data.frame(xstart = as.POSIXct('2011-03-27 15:00:00'), 
xend = as.POSIXct('2011-03-27 18:00:00')) 

library(ggplot2) 
ggplot() + 
    geom_rect(data = rects, aes(xmin = xstart, xmax = xend, 
      ymin = -Inf, ymax = Inf), alpha = 0.4) + 
    geom_line(data = dat, aes(x,y)) 

sẽ cung cấp cho bạn này, m

7

Tạo một data.frame với các cột từ 3 đến 6 giờ chiều cho mỗi ngày bao gồm dữ liệu. Sử dụng nó cho một lớp geom_rect (sử dụng Inf-Inf cho y). Đặt lớp đó trước các lớp dữ liệu của bạn (vì vậy nó nằm bên dưới chúng) và điền vào một alpha để lưới có thể được nhìn xuyên qua nó.

Câu trả lời chi tiết hơn sẽ có thể với câu hỏi chi tiết hơn, có thể tái sản xuất.

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