【问题标题】:Date bug in dygraph in dygraphs package (using JavaScript) in RR 中 dygraphs 包(使用 JavaScript)中 dygraph 中的日期错误
【发布时间】:2015-07-09 21:42:30
【问题描述】:

我使用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/22987654322@ 上发布了这个问题

【问题讨论】:

  • 这可能与时区有关。
  • 我对 R 的了解不足以帮助您,这就是为什么我只是评论而不是回答。只需检查它是否与时区有关。如果是,请查看如何读取日期值,而不管您的本地时区如何。
  • 提供一个可重现的例子...
  • 我在最后添加了一个代码,可以实现可重现的示例:)

标签: r dygraphs


【解决方案1】:

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

理论上dygraph使用客户端工作站的时区,检查this。但在内部,它会保持格林威治标准时间(不确定这一点,但看起来是这样),看: 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 对象中做一些小的变通方法并将时区设置为格林尼治标准时间。 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()

【讨论】:

  • 谢谢 Bartek :) 我会尽快看看这个
  • tz = "GMT" 不是 ax.POSIXct 中的默认参数?我已经在另一台计算机上尝试过这段代码,并没有这样的错误,有一种想法可能是系统时区和 DOS 时区在某种程度上是不同的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-24
  • 1970-01-01
  • 1970-01-01
  • 2016-06-26
  • 1970-01-01
  • 2017-12-14
相关资源
最近更新 更多