2012-05-10 13 views
5

Mam wykres w R z datą/czasem (POSIXct) na osi X i niektórymi danymi na osi Y.
Chcę zapewnić odcień na osi X między 3pm a 6pm każdej daty na osi XPodaj odcienie między datami na osi X

+0

w grafice bazowych, prawdopodobnie przy użyciu '? Rect' (i ewentualnie' par ("usr") 'do uzyskaj minimalną/maksymalną wartość y wykresu, w jednostkach użytkownika - lub 'grconvertX/grconvertY'), aby ustawić grupę cieniowanych prostokątów, a następnie przeprowadź ponownie nad nimi dane. Powtarzalny przykład byłby miły. –

Odpowiedz

15

Mniej więcej po co 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)) 

dałbyś tym m

7

Wykonaj data.frame z kolumnami, które są 3 i 6 po południu dla każdego dnia obejmującego dane. Użyj tego dla warstwy geom_rect (używając Inf i -Inf dla y). Umieść tę warstwę przed warstwami danych (tak, aby znajdowała się pod nimi) i wypełnij element alfa, aby sieć była przez nią widoczna.

Bardziej szczegółowa i powtarzalna odpowiedź byłaby bardziej szczegółowa.

Powiązane problemy