En este tutorial vamos a utilizar el conjunto de datos mtcars, convirtiendo el número de cilindros (cyl) en un factor para usarlo como variable de grupo y guardando el nombre de cada coche en una nueva columna llamada model.
df <- mtcars
df$cyl <- factor(df$cyl)
df$model <- rownames(mtcars)
Para crear un gráfico de dispersión con plotly pasa las variables a x e y y establece type = "scatter" y mode = "markers". También puedes usar la función add_markers, que es equivalente. El gráfico permite hacer zoom y pasar el ratón por encima de los puntos para ver sus coordenadas.
# install.packages("plotly")
library(plotly)
plot_ly(df, x = ~wt, y = ~mpg,
type = "scatter", mode = "markers")
Asigna una variable categórica a color para colorear los puntos por grupo y establece los colores con colors. Cada grupo se añadirá a la leyenda, de modo que puedes hacer clic en ellos para ocultarlos o mostrarlos. También puedes asignar la variable a symbol para usar una forma diferente para cada grupo.
plot_ly(df, x = ~wt, y = ~mpg, color = ~cyl,
colors = c("#3A86FF", "#FFBE0B", "#FB5607"),
type = "scatter", mode = "markers")
Si asignas una variable numérica a size el tamaño de los puntos dependerá de sus valores, creando un gráfico de burbujas. El tamaño mínimo y máximo de las burbujas se puede establecer con sizes. En este ejemplo también añadimos transparencia a las burbujas con opacity, ya que se solapan.
plot_ly(df, x = ~wt, y = ~mpg, color = ~cyl,
size = ~hp, sizes = c(10, 50),
marker = list(opacity = 0.6),
type = "scatter", mode = "markers")
El estilo de los puntos se personaliza pasando una lista a marker, que permite establecer el tamaño (size), el color (color), la forma con symbol (como "circle", "square", "diamond" o "triangle-up") y el borde de los marcadores con line.
plot_ly(df, x = ~wt, y = ~mpg,
type = "scatter", mode = "markers",
marker = list(size = 12, color = "#FFBE0B", symbol = "diamond",
line = list(color = "#3A86FF", width = 1.5)))
Usa text para pasar información adicional a los puntos y hovertemplate para personalizar el texto que se muestra al pasar el ratón por encima. En este ejemplo el cuadro muestra el nombre del coche junto a los valores de los ejes, mostrando el peso con dos decimales con %{x:.2f}.
plot_ly(df, x = ~wt, y = ~mpg,
type = "scatter", mode = "markers",
text = ~model,
hovertemplate = paste("<b>%{text}</b><br>",
"Peso: %{x:.2f}<br>",
"Millas por galón: %{y}<extra></extra>"))
plotly no calcula rectas de regresión, pero puedes ajustar un modelo con lm, calcular los valores ajustados con fitted y añadirlos al gráfico con add_lines. El argumento name establece el nombre de cada traza en la leyenda.
fit <- lm(mpg ~ wt, data = df)
plot_ly(df, x = ~wt, y = ~mpg,
type = "scatter", mode = "markers", name = "Datos") |>
add_lines(y = ~fitted(fit), name = "Recta de regresión")
Si prefieres ggplot2 puedes crear un gráfico de dispersión en ggplot2 y convertirlo en un gráfico interactivo con ggplotly. Consulta la guía de gráficos interactivos con plotly para aprender a personalizar los títulos, los ejes y la leyenda.
Aprende estadística desde lo básico hasta técnicas avanzadas, explicado con claridad
Ir al sitio
También te puede interesar