r:如何以格式打印带有时间的白天直方图,例如13:00 在 ggvis 中

r: How to print a histogram of daytimes with times in Format e.g. 13:00 in ggvis

我有一个带有 datetime 对象的 data.frame,从 csv 文件中读入并从 lubridate 包中转换为带有 dmy_hm() 的 datetime 对象。我想打印一个与时间分布无关的直方图,与日期无关。这是一个例子,看起来已经很不错了:

library(dplyr)
library(ggvis)
library(lubridate)

# Create Example
GESPEICHERT <- c(rep("01/05/2016 15:26",times=10),
                 rep("13/05/2016 00:17",times=5),
                 rep("01/08/2016 12:05",times=10),
                 rep("17/04/1983 23:39",times=5),
                 rep("06/07/2015 09:36",times=10))
INFO <- c(rep("Bla",times=30),rep("Bla Bla",times=10))

df_time <- cbind.data.frame(GESPEICHERT,INFO,stringsAsFactors=FALSE)          

df_time %>%
  mutate(GESPEICHERT = dmy_hm(GESPEICHERT)) -> df_time

# Trying to reduce datetime Object to time
df_time %>%
  mutate(UHRZ_NUM = hour(GESPEICHERT) * 60 + minute(GESPEICHERT)) %>% # Time in Minute Numbers, not necessary
  mutate(GESP_UHRZEIT = format(GESPEICHERT,format="%H:%M")) %>%  # 
  mutate(GESP_UHRZEIT = as.POSIXct(GESP_UHRZEIT,format="%H:%M")) -> df_time              

# Plot               
df_time %>%
    ggvis(x=~GESP_UHRZEIT) %>% 
    layer_histograms() %>% 
    scale_datetime("x", nice = "minute",label="daytime")

我的 x 轴有两个问题:

  1. 我希望 x 轴以例如形式显示时间15:00 不是下午 3 点

  2. 两边显示今天的日期和第二天的日期,因为在我的代码中我用mutate(GESP_UHRZEIT = format(GESPEICHERT,format="%H:%M"))删除了日期所以它以今天的日期为日期。 我怎样才能摆脱它? (我可以只创建一个时间对象吗?我可以把它转换成数字,但仍然显示为时间吗?)

如果有人能给我一些提示,我将不胜感激。替代包,改变数据结构,欢迎大家提出。

附加问题: 如果有人知道如何使 binwidth 交互(在这种情况下!),请告诉我。这不是必需的,但对我来说是一个很好的功能。我在有数字的情况下这样做了,但对日期时间对象没有成功。

只需将带有正确格式代码的 add_axis 添加到您的管道中即可:

> df_time %>%
     ggvis(x=~GESP_UHRZEIT) %>% 
     layer_histograms() %>% 
     scale_datetime("x", nice = "minute",label="daytime") %>%
     add_axis(type="x",format="%H:%M")

这将给出一个只有 hour:minute 次的情节,并且不会显示任何天数。