绘制x轴HH:mm:SS用于POSIXct

时间:2017-02-02 23:59:35

标签: r ggplot2

以下代码未被转换为纽约时间。知道为什么吗?我看到它在发布的答案中有效,但我机器上的代码会改变时间。

 time = as.POSIXct(c("2016-06-30 15:20:23 GMT","2016-06-30 15:20:25 GMT","2016-06-30 15:20:27 GMT"),tz = "GMT")
 attr(time, "tzone") <- "America/New_York"
 #time = as.POSIXct(format(time, tz="America/New_York"),tz ="America/New_York")
 class(time)
 value = c(10,11,12)
     category = c(0,1,0)
     dat = data.frame(time = time, value = value, category = category)
     dat
                 time value category
1 2016-06-30 11:20:23    10        0
2 2016-06-30 11:20:25    11        1
3 2016-06-30 11:20:27    12        0

dat显示11作为小时,但下图仍显示小时为15?

 str(dat)
 library(ggplot2)
 ggplot(dat, aes(x=time, y = value, group = 1 )) +
   geom_point(aes (color = as.factor(category)) ) +geom_line()  + scale_x_datetime(date_labels = "%H:%M:%S")

它没有转换到NY时间,因为scale包已过期

1 个答案:

答案 0 :(得分:3)

要设置时区,请使用tz =参数as.POSIXct()。您的输入位于"GMT",因此我们可以告诉R这种情况。要转换为其他时区,请相应地设置属性tzone

要将x轴缩放为日期/时间,请使用scale_x_datetime()和相应的格式代码。

time = as.POSIXct(c("2016-06-30 15:20:23 GMT",
                    "2016-06-30 15:20:25 GMT",
                    "2016-06-30 15:20:27 GMT"), tz = "GMT")
attr(time, "tzone") <- "America/New_York"

value = c(10,11,12)
category = c(0,1,0)
dat = data.frame(time = time, value = value, category = category)

library(ggplot2)
ggplot(dat, aes(x = time, y = value, group = 1)) +
  geom_point(aes(color = as.factor(category))) + 
  geom_line() +
  scale_x_datetime(date_labels = "%H:%M:%S %Z")