2013-02-18 2 views
1

Я работаю с временным рядом. Первые 20 строк моих реальных данных показаны ниже. Я хочу:Построение таймсерий в ggplot2

a. Подстройте график ggplot на определенный таймфрейм (например, показывая значения между 07:46:40 и 07:49:00).

b. Я также хочу изменить frquency отметок на оси x. Используя пример подробного bwlow, я хочу, чтобы целые минуты отображались на оси (однако для моего правильного графика мне хотелось бы, чтобы отображались только почасовые значения).

Любые советы по вышеуказанному вопросу были бы с благодарностью получены.

day3 <- structure(list(Date = c("11/12/2012", "11/12/2012", "11/12/2012", 
          "11/12/2012", "11/12/2012", "11/12/2012", "11/12/2012", "11/12/2012", 
          "11/12/2012", "11/12/2012", "11/12/2012", "11/12/2012", "11/12/2012", 
          "11/12/2012", "11/12/2012", "11/12/2012", "11/12/2012", "11/12/2012", 
          "11/12/2012", "11/12/2012"), Time = c("07:46:10", "07:46:20", 
                    "07:46:30", "07:46:40", "07:46:50", "07:47:00", "07:47:10", "07:47:20", 
                    "07:47:30", "07:47:40", "07:47:50", "07:48:00", "07:48:10", "07:48:20", 
                    "07:48:30", "07:48:40", "07:48:50", "07:49:00", "07:49:10", "07:49:20" 
          ), Axis1 = c(59L, 651L, 59L, 0L, 22L, 50L, 0L, 0L, 114L, 899L, 
             129L, 33L, 21L, 9L, 224L, 135L, 266L, 16L, 59L, 126L), Steps = c(1L, 
                              2L, 1L, 0L, 2L, 1L, 0L, 0L, 5L, 15L, 6L, 2L, 2L, 0L, 8L, 5L, 
                              16L, 1L, 3L, 8L)), .Names = c("Date", "Time", "Axis1", "Steps" 
                             ), row.names = 52838:52857, class = "data.frame") 
#Creates a new dataframe with a time column. 
day3 <- within(day3,{ 
    posb <- as.POSIXlt(Time,format="%H:%M:%S") 
    posb <- NULL # cleanup 
}) 

library(ggplot2) 
g = ggplot(day3, aes(x=strptime(Time, "%H:%M:%S"), y=Axis1)) + geom_line(aes(group = 1)) + 
    theme_bw() + 
    xlab("Time") + 
    ylab("Activity (Counts per 10 seconds)") + 
    scale_x_datetime(limits=c(as.POSIXct("07:47:50"),as.POSIXct("07:49:10"))) 


g 

Редактировать

, если я хочу, чтобы добавить текстовое поле на моем графике, как я работаю с колонкой времени? До сих пор я получил:

geom_text(aes(05:00,0),label="Sedentary") 

... но это не хочет работать в данный момент.

ответ

1

Это вы что искали?

library(scales) 
ggplot(day3, aes(x=strptime(Time, "%H:%M:%S"), y=Axis1)) + geom_line(aes(group = 1)) + 
    theme_bw() + 
    xlab("Time") + 
    ylab("Activity (Counts per 10 seconds)") + 
    scale_x_datetime(limits=c(as.POSIXct("07:46:40",format="%H:%M:%S"),as.POSIXct("07:49:00",format="%H:%M:%S")), 
        breaks=date_breaks("1 min"), labels = date_format("%H:%M")) 

enter image description here

+0

Большое спасибо @juba - это здорово. У меня есть последний вопрос о планировании таймсерий (который я добавил к моему первоначальному вопросу). Любой совет будет полезен! –

+0

Попробуйте что-то вроде 'geom_text (aes (x = as.POSIXct (" 07:48:00 ", format ="% H:% M:% S "), y = 250), label =" foo ")' – juba

+0

Это здорово - спасибо @juba. –

Смежные вопросы