将 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
函数传递给 valueFormatter
和 axisLabelFormatter
.
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 一个日期。
是否存在为了在 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
函数传递给 valueFormatter
和 axisLabelFormatter
.
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 一个日期。