我使用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 ...
知道哪里有错误?
要重现此错误,请尝试使用此代码
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
答案 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()