Gráficos de ggplot2 interactivos con ggplotly

Librería

plotly

La función ggplotly

La función ggplotly del paquete plotly convierte los gráficos hechos con ggplot2 en gráficos interactivos, de modo que puedes hacer zoom, pasar el ratón por encima de los elementos para ver sus valores u ocultar grupos haciendo clic en la leyenda. Es la forma más sencilla de crear gráficos interactivos si ya trabajas con ggplot2.

Crea un gráfico con ggplot2, asígnalo a un objeto y pásalo a ggplotly. En el siguiente ejemplo utilizamos el conjunto de datos mpg de ggplot2 para crear un gráfico de dispersión coloreado por la clase de los coches.

# install.packages("ggplot2")
# install.packages("plotly")
library(ggplot2)
library(plotly)

p <- ggplot(mpg, aes(x = displ, y = hwy, color = class)) +
  geom_point()

ggplotly(p)

Ten en cuenta que la mayoría de geoms y personalizaciones de ggplot2 son compatibles, como los temas, las facetas o los colores, pero algunas extensiones de ggplot2 y algunos elementos, como los subtítulos y los captions, no se convierten.

Tooltip

Por defecto, el tooltip muestra todas las variables asignadas dentro de aes. El argumento tooltip permite elegir cuáles mostrar, pasando los nombres de las estéticas, como "x", "y" o "color". Establece tooltip = "none" para desactivarlo.

p <- ggplot(mpg, aes(x = displ, y = hwy, color = class)) +
  geom_point()

ggplotly(p, tooltip = c("x", "y"))

Texto emergente personalizado

Si quieres mostrar un texto personalizado pásalo a la estética text y luego establece tooltip = "text". ggplot2 te avisará de que text es una estética desconocida, pero puedes ignorarlo, ya que la utilizará ggplotly. Usa <br> para añadir saltos de línea.

p <- ggplot(mpg, aes(x = displ, y = hwy, color = class,
                     text = paste("Modelo:", model,
                                  "<br>Cilindrada:", displ,
                                  "<br>Millas por galón en carretera:", hwy))) +
  geom_point()

ggplotly(p, tooltip = "text")

Layout y leyenda

La salida de ggplotly es un objeto de plotly, por lo que puedes seguir personalizándolo con las funciones del paquete, como layout. Esto es útil para opciones que no se convierten desde ggplot2, como una leyenda horizontal debajo del gráfico.

p <- ggplot(mpg, aes(x = displ, y = hwy, color = drv)) +
  geom_point() +
  theme_minimal()

ggplotly(p) |>
  layout(legend = list(orientation = "h", x = 0, y = -0.2))

Marcas dinámicas

Por defecto, las marcas de los ejes son las del gráfico de ggplot2, por lo que al hacer zoom puedes acabar con pocas etiquetas. Establece dynamicTicks = TRUE para que se recalculen al hacer zoom. Esto es especialmente útil para las fechas en las series temporales.

p <- ggplot(economics, aes(x = date, y = unemploy)) +
  geom_line(color = "#264653")

ggplotly(p, dynamicTicks = TRUE)

Eliminar la barra de herramientas

La barra de herramientas de la esquina superior derecha del gráfico se puede eliminar con config(displayModeBar = FALSE). La función config también permite quitar el logo de plotly con displaylogo = FALSE o algunos de los botones.

p <- ggplot(mpg, aes(x = class, y = hwy, fill = class)) +
  geom_boxplot() +
  theme(legend.position = "none",
        axis.text.x = element_text(angle = 45))

ggplotly(p) |>
  config(displayModeBar = FALSE)

Si necesitas más control sobre la interactividad puedes crear los gráficos directamente con la función plot_ly, como se explica en la guía de gráficos interactivos con plotly. También puedes convertir mapas de ggplot2 en mapas interactivos.

MASTER - STATISTICS DOT COM

Master Statistics

Aprende estadística desde lo básico hasta técnicas avanzadas, explicado con claridad

Ir al sitio
R PACKAGES IO

R Packages

Explora y descubre miles de paquetes, funciones y datasets de R

Ir al sitio

También te puede interesar