R ggplot2中以小时为单位的缩放时间

R ggplot2中以小时为单位的缩放时间,r,ggplot2,R,Ggplot2,在下面的图中,我想删除日期,并将时间保留为小时。我见过一些解决方案,如和另一个将时间转换为数字的解决方案。我喜欢使用require(scales) 这是我的阴谋 当我换到 require(比例) ggplot(数据=dfweek2,aes(x=时间,y=平均步数))+FACT\网格(天~)+geom\路径()+scale\ x\日期时间(标签=日期格式(“%H:%M”) 这个比例不再正确 我做错了什么 > str(dfweek2) Classes ‘grouped_df’, ‘tbl_d

在下面的图中,我想删除日期,并将时间保留为小时。我见过一些解决方案,如和另一个将时间转换为数字的解决方案。我喜欢使用
require(scales)

这是我的阴谋

当我换到
require(比例)
ggplot(数据=dfweek2,aes(x=时间,y=平均步数))+FACT\网格(天~)+geom\路径()+scale\ x\日期时间(标签=日期格式(“%H:%M”)

这个比例不再正确

我做错了什么

> str(dfweek2)
Classes ‘grouped_df’, ‘tbl_df’, ‘tbl’ and 'data.frame': 576 obs. of  4 variables:
 $ day       : Factor w/ 2 levels "Weekday","Weekend": 1 1 1 1 1 1 1 1 1 1 ...
 $ interval  : int  0 5 10 15 20 25 30 35 40 45 ...
 $ Mean_steps: num  2.333 0.462 0.179 0.205 0.103 ...
 $ Time      : POSIXct, format: "2015-06-15 00:00:00" "2015-06-15 00:05:00" ...

我不知道这是不是时区的问题。查看
属性(dfweek2$Time)
的输出,看看它是否有
tzone
属性。如果是这样,那么当调用
format
时没有
tz
参数,它将把时间从存储的时区转换为设置的系统时区。如果是这种情况,您有两个选择

  • dfweek2$Time


    attr(dfweek2$Time,“tzone”)谢谢尼克。两者都是富有洞察力的解决方案。我还发现我没有设置
    tz
    参数,因此它采用本地tz,而
    date\u格式
    采用
    GMT
    作为默认值。因此,这是一个问题。
    > str(dfweek2)
    Classes ‘grouped_df’, ‘tbl_df’, ‘tbl’ and 'data.frame': 576 obs. of  4 variables:
     $ day       : Factor w/ 2 levels "Weekday","Weekend": 1 1 1 1 1 1 1 1 1 1 ...
     $ interval  : int  0 5 10 15 20 25 30 35 40 45 ...
     $ Mean_steps: num  2.333 0.462 0.179 0.205 0.103 ...
     $ Time      : POSIXct, format: "2015-06-15 00:00:00" "2015-06-15 00:05:00" ...