侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

如果使用scale_x_datetime,时间序列图将偏移2小时

2023-05-03 星期三 / 0 评论 / 0 点赞 / 70 阅读 / 2456 字

问题: 我正在尝试使用ggplot绘制时间序列,但由于某种原因,数据会偏移两个小时. 数据: > test <- structure(list(interval = structure(

... . . 问题:

我正在尝试使用ggplot绘制时间序列,但由于某种原因,数据会偏移两个小时.

数据:

> test <- structure(list(interval = structure(c(1465423500,1465423800,1465424100,1465424400,1465424700,1465425000,1465425300,1465425600,1465425900,1465426200,1465426500,1465426800,1465427100),class = c("POSIXct","POSIXt"),tzone = ""),mean = c(0.339622641509434,0.132075471698113,0.150943396226415,0.0754716981132075,2.09433962264151,0.528301886792453,0.867924528301887,1.47169811320755,0.30188679245283,0.320754716981132,0.679245283018868)),.Names = c("interval","mean"),class = c("tbl_df","data.frame"),row.names = c(NA,-13L))> test    Source: local data frame [13 x 2]     interval      mean     (time)     (dbl)     1  2016-06-09 00:05:00 0.3396226 # First value: 5 minutes past midnight    2  2016-06-09 00:10:00 0.1320755     3  2016-06-09 00:15:00 0.1509434     4  2016-06-09 00:20:00 0.0754717     5  2016-06-09 00:25:00 2.0943396     6  2016-06-09 00:30:00 0.5283019     7  2016-06-09 00:35:00 0.8679245     8  2016-06-09 00:40:00 0.0000000     9  2016-06-09 00:45:00 1.4716981     10 2016-06-09 00:50:00 0.3018868     11 2016-06-09 00:55:00 0.1320755     12 2016-06-09 01:00:00 0.3207547     13 2016-06-09 01:05:00 0.6792453

这很好用:

g <- ggplot(interval.steps,aes(interval,mean))g + geom_line()

但这不是:

g <- ggplot(interval.steps,mean))g + geom_line() +    scale_x_datetime(date_labels = '%H:%M') # offsets times by -2 hours

我究竟做错了什么?提前致谢.

.

解决方法

. 看起来scale_x_datetime正在将时区的时区从本地时区更改为UTC.以下功能可以解决问题.

# Source: https://stackoverflow.com/a/11002253/496488# Put in your local timezone. I've inserted mine just for illustration.date_format_tz <- function(format = "%H:%M",tz = "America/Los_Angeles") {  function(x) format(x,format,tz=tz)}g <- ggplot(interval.steps,mean))g + geom_line() +  scale_x_datetime(labels = date_format_tz())
. . .. ...

广告 广告

评论区