examples - Opciones simples de Dygraphs JavaScript en R/Shiny
dygraph examples (1)
¿Hay alguna manera de utilizar opciones simples de Dygraphs JavaScript en R (y Shiny más en específico)?
http://dygraphs.com/options.html
Creo que la función JS()
del paquete htmlwidgets puede ser útil, pero no estoy seguro.
Por ejemplo, quiero utilizar highlightSeriesOpts
(véase el primer enlace) para resaltar series individuales en un gráfico de dygraphs para visualizar SOLAMENTE las series seleccionadas en la leyenda (y no todas las series al mismo tiempo por defecto). Las 2 parcelas más bajas en el siguiente enlace muestran exactamente lo que se debe lograr:
http://dygraphs.com/gallery/#g/highlighted-series
Ya se ha dado una solución CSS (es decir, .dygraph-legend {display: none;}
y .dygraph-legend .highlight {display: inline;}
), pero que de alguna manera no funciona en R / Shiny.
De todos modos, aquí hay un guión conceptual mío. No funciona, pero todos los consejos son muy apreciados.
ui <- fluidPage(
sidebarLayout(
sidebarPanel(),
mainPanel(dygraphOutput("plot"))
)
)
server <- function(input, output) {
set.seed(123)
data <- matrix(rnorm(12), ncol = 2)
data <- ts(data)
# Workaround for what might be a bug
# Reference: http://stackoverflow.com/questions/28305610/use-dygraph-for-r-to-plot-xts-time-series-by-year-only
data <- cbind(as.xts(data[,1]), as.xts(data[,2]))
colnames(data) <- c("Series 1", "Series 2")
#print(data) # Uncomment to view data frame
# The logic of the following is that plain Dygraphs JavaScript
# code can be used as plotting material
output$plot <- JS("
new Dygraph(plot,
data,
{ highlightSeriesOpts: {strokeWidth: 3} });
g.updateOptions({ highlightSeriesOpts: {strokeWidth: 3} });
")
}
shinyApp(ui = ui, server = server)
El highlightSeriesOpts
hace que el trazo de serie resaltado sea más audaz y no afecte a la leyenda. Todavía necesitará el CSS
adecuado para mostrar solo las series más cercanas en la leyenda. Para establecer el highlightSeriesOpts
como sugiere, hay un claro ejemplo en http://rstudio.github.io/dygraphs/gallery-series-highlighting.html .
lungDeaths <- cbind(ldeaths, mdeaths, fdeaths)
dygraph(lungDeaths, main = "Deaths from Lung Disease (UK)") %>%
dyHighlight(highlightSeriesOpts = list(strokeWidth = 3))
Para una respuesta más completa en Shiny, podríamos hacer algo como esto.
library(shiny)
library(dygraphs)
lungDeaths <- cbind(ldeaths, mdeaths, fdeaths)
ui <- dygraph(lungDeaths, main = "Deaths from Lung Disease (UK)") %>%
dyHighlight(highlightSeriesOpts = list(strokeWidth = 3)) %>%
dyCSS(textConnection("
.dygraph-legend > span { display: none; }
.dygraph-legend > span.highlight { display: inline; }
"))
server <- function(input,output,session){
}
shinyApp(ui,server)