在ggplot2中显示ITime值as.character

时间:2017-09-28 19:50:25

标签: r ggplot2 data.table

我正在绘制ITime变量的直方图,如果是x变量,我希望x轴刻度显示在as.character值中。默认情况下,它们仅表示为自0:00以来的秒数。我怎么能做到这一点?

make.time <- function(x){
        mins <- sample(1:59, 1)
        if(mins < 10) mins <- paste0('0', mins)
        paste0(sample(1:23, 1), ':', mins)
}


data.table(x = sample(1:100, 50, T), 
           time = as.ITime(replicate(50, make.time()))) %>% 
      ggplot(aes(time)) + geom_histogram()

1 个答案:

答案 0 :(得分:1)

嗯,在示例中,make.time()函数没有被复制。这是一个相对的实现

make.time <- function(n=1){
  mins <- sample(1:59, n, replace=T)
  hrs <- sample(1:23, n, replace=T)
  as.ITime(sprintf("%d:%02f", hrs, mins))
}

然后样本数据

dd <- data.table(x = sample(1:100, 50, T), time = make.time(50))

然后,如果您想要更传统的日期/时间轴标签,您可以明确转换为POSIXct

ggplot(dd, aes(as.POSIXct(time))) + geom_histogram()