R中dygraphs包中的dygraph中的日期错误(使用JavaScript)

时间:2014-12-22 18:51:57

标签: r dygraphs

我使用dygraphs包中的dygraph函数绘制了一个dygraph。我的数据来自2014-12-10至2014-12-17的日期

> str(seriesXts)
An ‘xts’ object on 2014-12-10/2014-12-17 containing:
  Data: num [1:8, 1:30] 0.928 0.977 0.935 0.989 0.854 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:30] "CiekawostkiFinanse" "CiekawostkiKobieta" "CiekawostkiMototech" "CiekawostkiSport" ...
  Indexed by objects of class: [POSIXct,POSIXt] TZ: 
  xts Attributes:  
List of 1
 $ descr: chr "my new xts object"

但是在一个情节中,传说他们开始1天更早,检查这个数字: 在轴上有一个日期12,但在图例上有一个日期11 ...

bug

知道哪里有错误?

要重现此错误,请尝试使用此代码

library(archivist)
library(dplyr)
library(devtools)
devtools::install_github("rstudio/dygraphs")
library(dygraphs)
seriesReactive <- loadFromGithubRepo( "db914a43536d4d3f00cf3df8bf236b4a", user= "MarcinKosinski", repo="Museum", value = TRUE)
dygraph(seriesReactive, main = "Dzienna proporcja kliknięć do odsłon dla danych struktur", ylab = "Proporcja") %>% 
    dyRangeSelector()

我也在rstudio的github上发布了这个问题https://github.com/rstudio/dygraphs/issues/22

1 个答案:

答案 0 :(得分:1)

说实话,这很奇怪,看起来问题不仅在于时区,还在于规模。

理论上,dygraph使用客户端工作站的时区,检查this。但在内部,它在GMT中保留时间(不确定,但它看起来如此),看: d <- dygraph(seriesReactive, main = "Dzienna proporcja kliknięć do odsłon dla danych struktur", ylab = "Proporcja") %>% dyRangeSelector() d$x$data[[1]] [1] "2014-12-09T23:00:00Z" "2014-12-10T23:00:00Z" "2014-12-11T23:00:00Z" "2014-12-12T23:00:00Z" [5] "2014-12-13T23:00:00Z" "2014-12-14T23:00:00Z" "2014-12-15T23:00:00Z" "2014-12-16T23:00:00Z" 我在CET时区,所以我得到1小时的差异。

现在,因为dyGraph使用我的时区,一切都应该没问题,但它不是。但是,如果您手动更改dygraph的比例: d$x$scale <- "hourly" 它开始按预期工作。提取日期可能有些问题吗?

根据docs,您可以设置从数据中使用时区的选项 indexTZ(seriesReactive) <- "CET" dygraph(seriesReactive, main = "Dzienna proporcja kliknięć do odsłon dla danych struktur", ylab = "Proporcja") %>% dyOptions(useDataTimezone = TRUE) %>% dyRangeSelector() 但它对我没用(没有任何表现)。我不知道为什么,但我没有时间深入研究这个问题。

您总是可以在xts对象中设置小的解决方法并将时区设置为GMT。 index(seriesReactive) <- as.POSIXct(format(index(seriesReactive), format="%Y-%m-%d"), tz = "GMT") dygraph(seriesReactive, main = "Dzienna proporcja kliknięć do odsłon dla danych struktur", ylab = "Proporcja") %>% dyRangeSelector()