Is there a hack that exists in order to use the dygraphs
package in R Shiny
with fractional timepoints? I understand this pacakge is mainly for time-series data, but I think it would be extremely useful as a survival plot as well.
For example, say I have the following data:
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
I know I can do the following:
samp.xts <- xts(samp.data[,-1], order.by=as.Date(samp.data[,1]))
dygraph(samp.xts)
But this gets rid of some information and the x-axis is a date instead of a value. I have been research the 'dygraphs' javascript library and there seems to be some functionality for non-time-series data as well, but I haven't found anything associated with the R
package yet. Is there any javascript
code I can call from the function?
Alright, so after playing with it for a while, I think I have it figured out. You have to pass javascript
functions to the valueFormatter
and the 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")))
And here is the graph:
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) }"
)
It is definitely a hack, but it gives me what I wanted to see. Note that valueFormatter
returns a value, where axisLabelFormatter
returns a date.