Gráficos Interactivos con `plotly`

De lo Estático a lo Dinámico: Dando Vida a tus Datos.

El Siguiente Nivel: De Ver a Explorar

Un gráfico estático de `ggplot2` es una herramienta poderosa para comunicar un punto. Pero en la fase de exploración, a menudo queremos más. Queremos hacer zoom en un área de interés, pasar el cursor sobre un punto para ver sus valores exactos o filtrar datos directamente desde la visualización. Queremos transformar al usuario de un observador pasivo a un explorador activo.

Aquí es donde brilla el paquete `plotly`. Su función principal, `ggplotly()`, actúa como una "varita mágica" que toma casi cualquier gráfico que hayas creado con `ggplot2` y lo convierte en un widget web interactivo con muy poco esfuerzo, sirviendo como el puente perfecto entre la robustez de `ggplot2` y la interactividad de la web.

La Magia de `ggplotly()`

La belleza de `plotly` radica en su simplicidad. No necesitas aprender una nueva sintaxis de gráficos desde cero. Simplemente construyes tu gráfico como siempre lo has hecho con `ggplot2` y luego pasas el objeto resultante a `ggplotly()`.

Gráfico Estático (ggplot2)

# 1. Creamos el objeto ggplot p <- ggplot(datos, aes(x = var1, y = var2)) + geom_point() # 2. Mostramos el gráfico estático p

Gráfico Interactivo (plotly)

# 1. Creamos el mismo objeto ggplot p <- ggplot(datos, aes(x = var1, y = var2)) + geom_point() # 2. ¡Magia! Lo envolvemos en ggplotly() ggplotly(p)

Los Superpoderes en Detalle

Tooltips Informativos

Al pasar el cursor sobre cualquier punto de datos, una pequeña caja de información aparece automáticamente, mostrando los valores exactos de las variables mapeadas.

Zoom Inteligente

Permite al usuario dibujar un rectángulo sobre un área de interés para hacer zoom y examinar clústeres de datos o puntos específicos en detalle.

Paneo (Panning)

Una vez que se ha hecho zoom, el usuario puede arrastrar el gráfico para moverse por el área ampliada, explorando la región sin perder el contexto.

Filtrado por Leyenda

Si el gráfico tiene una leyenda (por ejemplo, puntos coloreados por categoría), el usuario puede hacer clic en los elementos de la leyenda para ocultar o mostrar grupos de datos al instante.

Mejorando la Experiencia: Tooltips Personalizados

Los tooltips automáticos son útiles, pero a menudo queremos mostrar más información que solo las variables de los ejes X e Y. Por ejemplo, en nuestro gráfico de dispersión, sería genial ver el puntaje global y el nivel de rendimiento del estudiante al pasar el cursor sobre su punto.

La clave para personalizar los tooltips es preparar la información *dentro* de la llamada a `ggplot`. Creamos una nueva "estética" llamada `text` que contiene el texto que queremos mostrar.

Paso 1: Construir el Gráfico con la Estética `text`

Modificamos nuestra llamada a `ggplot` para incluir la estética `text`. Usamos `paste()` o `glue()` para construir una cadena de texto formateada con la información que deseamos.

p <- ggplot(datos_saber, aes(
    x = punt_matematicas, 
    y = punt_lectura_critica,
    # AÑADIMOS LA ESTÉTICA 'text' PARA EL TOOLTIP
    text = paste(
      "Puntaje Global:", punt_global,
      "<br>Rendimiento:", rendimiento_global
    )
  )) +
  geom_point(aes(color = cole_naturaleza), alpha = 0.5) +
  labs(...) +
  theme_minimal()
                            

Paso 2: Activar el Tooltip en `ggplotly()`

Finalmente, le decimos a `ggplotly()` que use la estética `text` que acabamos de crear para poblar el contenido del tooltip.

# Le decimos a ggplotly que busque la estética "text"
ggplotly(p, tooltip = "text")
                            

¿Qué es `<br>`?

Es la etiqueta HTML para un salto de línea. Como `plotly` genera una visualización web, podemos usar etiquetas HTML simples dentro de nuestras cadenas de texto para darles formato, como crear múltiples líneas en nuestro tooltip.