Un UpSet plot visualiza intersecciones entre conjuntos, una alternativa escalable a los diagramas de Venn cuando se comparan más de tres conjuntos. Los datos deben ser una matriz binaria donde cada columna es un conjunto y cada fila es un elemento (1 = pertenece, 0 = no pertenece).
set.seed(42)
n <- 300
genres_df <- data.frame(
Action = sample(0:1, n, TRUE, prob = c(0.6, 0.4)),
Comedy = sample(0:1, n, TRUE, prob = c(0.5, 0.5)),
Drama = sample(0:1, n, TRUE, prob = c(0.4, 0.6)),
Romance = sample(0:1, n, TRUE, prob = c(0.7, 0.3)),
Thriller = sample(0:1, n, TRUE, prob = c(0.65, 0.35)),
Documentary = sample(0:1, n, TRUE, prob = c(0.8, 0.2))
)
upset()
Pasa el data frame binario a upset(). Las barras horizontales de la izquierda muestran el tamaño de cada conjunto; las barras verticales muestran el tamaño de cada intersección. Los puntos conectados en la matriz indican qué conjuntos forman cada intersección.
# install.packages("UpSetR")
library(UpSetR)
upset(genres_df)

nsets y nintersects

nsets controla cuántos conjuntos aparecen en el gráfico (los más grandes por defecto). nintersects limita cuántas intersecciones se muestran en el gráfico de barras. Aumenta ambos para tener una visión más completa.
# install.packages("UpSetR")
library(UpSetR)
upset(genres_df,
nsets = 6,
nintersects = 15)
order.by
Por defecto las intersecciones se ordenan por frecuencia ("freq"). Usa order.by = "degree" para ordenar por el número de conjuntos en cada intersección, útil para identificar primero las pertenencias exclusivas y los solapamientos entre pares.
# install.packages("UpSetR")
library(UpSetR)
upset(genres_df,
order.by = "degree")


Usa sets.bar.color para cambiar el color de las barras de tamaño de conjunto (panel izquierdo) y main.bar.color para las barras de tamaño de intersección (panel superior). matrix.color controla el color de los puntos en la matriz.
# install.packages("UpSetR")
library(UpSetR)
upset(genres_df,
sets.bar.color = "steelblue",
main.bar.color = "tomato3")
Usa queries para resaltar una intersección específica. Establece query = intersects, pasa los nombres de los conjuntos en params, elige un color y pon active = TRUE para rellenar la barra en lugar de solo añadir un contorno.
# install.packages("UpSetR")
library(UpSetR)
upset(genres_df,
queries = list(
list(query = intersects,
params = list("Drama", "Comedy"),
color = "steelblue",
active = TRUE)
))

Aprende estadística desde lo básico hasta técnicas avanzadas, explicado con claridad
Ir al sitio
También te puede interesar