Plotly tiene esta buena función para ocultar un gráfico, si hace clic en su nombre en la leyenda. Los elementos de la leyenda se vuelven grises y la línea solo vuelve a aparecer si volvemos a hacer clic en el elemento de la leyenda.
Considere que desea implementar una aplicación brillante, donde el usuario puede ver la serie temporal y, además, puede ver la estacionalidad de la tendencia de la serie, etc. en el mismo gráfico.
Inicialmente, solo quiero que se muestre la serie en el objeto ggplotly representado, cuando el usuario abre la aplicación. Todos los demás gráficos de diagnóstico como Trend (en mi reprex) y estacionalidad deben estar ocultos de forma predeterminada. Solo cuando hago clic en el elemento de leyenda Tendencia (reprex), la línea de tendencia debería aparecer adicionalmente.
Sé cómo hacer esto en brillante, con funciones brillantes, pero quiero poder resolverlo con la funcionalidad plotly o javascript de la manera que mencioné anteriormente.
código reprex (trate de ocultar la línea "Tendencia" por defecto):
library(plotly) library(lubridate) library(ggplot2) set.seed(42) data <- tibble(id = c(rep("A",24)), value = c(cumsum(rnorm(12)), seq( 1, 7, length.out = 12)), date = rep(c(ymd("2013-01-01")+ months(0:11)),2), label = c(rep("Series",12),rep("Trend", 12)) ) p <- ggplot(data, mapping = aes(x= date, y= value, color = label)) + geom_line() + xlab("") ggplotly(p) %>% layout(legend=list(y = -0.2, xanchor = 'left', yanchor = 'bottom', orientation = 'h'))Puede usar un style con traces que solo podrán ocultar la línea de Trend . Puedes usar el siguiente código:
library(plotly) library(lubridate) library(ggplot2) set.seed(42) data <- tibble(id = c(rep("A",24)), value = c(cumsum(rnorm(12)), seq( 1, 7, length.out = 12)), date = rep(c(ymd("2013-01-01")+ months(0:11)),2), label = c(rep("Series",12),rep("Trend", 12)) ) p <- ggplot(data, mapping = aes(x= date, y= value, color = label)) + geom_line() + xlab("") p <- ggplotly(p) %>% layout(legend=list(y = -0.2, xanchor = 'left', yanchor = 'bottom', orientation = 'h')) style(ggplotly(p),visible="legendonly", traces = 2)Producción:
Como puede ver en la imagen, actualmente solo se muestran las series y la tendencia está oculta.