我有一堆时间戳,想要制作一个时间值的直方图:
options(stringsAsFactors = FALSE)
mydata <- read.csv("https://raw.githubusercontent.com/mobilizingcs/demo/gh-pages/data/snack/snackdemo.csv")
time_of_day <- strptime(substring(mydata$context.timestamp, 12), format = "%H:%M:%S")
# Almost right
qplot(time_of_day)
默认设置几乎是我想要的,但我希望X的标签只显示时间,而不是日期:
# This seems wrong??
qplot(time_of_day) + scale_x_datetime(labels = scales::date_format("%H:%M"))
现在我确实得到了标签格式,但ggplot2似乎放错了标签值?它将点16 Sept 00:00
标记为新图中的22:00
。如何获得原始比例,但使用%H:%M
标签格式?
答案 0 :(得分:4)
scales::date_format
设置tz = "UTC"
会导致错误的时间。
查看您想要 CEST -Timezone的time_of_day
,以便以下工作
qplot(time_of_day) +
scale_x_datetime(labels = scales::date_format("%H:%M", tz = "Europe/Berlin"))
编辑:如果您不想依赖用户的时区,则必须先指定mydata$context.timestamp
的tz。
具体而言,您的strptime
通话会产生不同的时间,具体取决于用户当前的tz。见?strptime
。由于您未提供tz,因此默认值为tz=""
但“”是当前时区
解决方案:
mydata$context.timestamp
strptime
的数据
scales::date_format("%H:%M", tz="YOUR STANDART TZ")
由于大多数标准化选择tz = "UTC"
,这是scales::date_format
答案 1 :(得分:0)