将 R dygraphs 用于分数时间点?

Using R dygraphs for fractional timepoints?

是否存在为了在 R Shiny 中使用具有小数时间点的 dygraphs 包而存在的 hack?我知道这个包主要用于时间序列数据,但我认为它作为生存图也将非常有用。

例如,假设我有以下数据:

samp.data <- data.frame(Months=seq(0,10,by=0.5), Surv=seq(1,0,length.out=21))

head(samp.data)

  Months Surv
1    0.0 1.00
2    0.5 0.95
3    1.0 0.90
4    1.5 0.85
5    2.0 0.80
6    2.5 0.75

我知道我可以做到以下几点:

samp.xts <- xts(samp.data[,-1], order.by=as.Date(samp.data[,1]))
dygraph(samp.xts) 

但这去掉了一些信息并且 x 轴是日期而不是值。我一直在研究 'dygraphs' javascript 库,似乎也有一些非时间序列数据的功能,但我还没有找到与 R 包相关的任何东西.我可以从函数中调用任何 javascript 代码吗?

感谢您的帮助。

我假设 "fractional timepoints" 你指的是日内数据。 dygraphs 可以与 POSIXct 上索引的数据一起使用,这将允许您在一天内放置点数。

在您的示例中,您将索引转换为 Date,这将删除数据中的任何时间。

您尝试过以下方法吗?

samp.xts <- xts(samp.data[,-1], order.by=as.POSIXct(samp.data[,1]))
dygraph(samp.xts) 

注意as.POSIXct

好吧,玩了一会儿,我想我已经弄明白了。您必须将 javascript 函数传递给 valueFormatteraxisLabelFormatter.

samp.data <- data.frame(Months=seq(0,10,by=0.5), Surv=seq(1,0,length.out=21))
samp.xts <- xts(samp.data[,-1], order.by=as.POSIXct(10*samp.data[,1],origin=as.Date("1970-01-01")))

这是图表:

dygraph( samp.xts ) %>%
  dyAxis(name="x",
         valueFormatter="function(d){ var date = new Date(d); return (date.getSeconds()/10) }",
         axisLabelFormatter="function(d){ return (d.getSeconds()/10) }"
  )

这绝对是一个 hack,但它给了我想要看到的东西。请注意 valueFormatter returns 一个值,其中 axisLabelFormatter returns 一个日期。