Reto 1

El concurso de la figura más fea

Juan David Leongómez

Universidad El Bosque

10 de junio de 2026

Criterios de votación

  • 💀 Ilegibilidad: ¿Es imposible leer las etiquetas o los ejes?
  • 🤢 Colores: ¿Duele mirarla?
  • 😵 Tipo de gráfica: ¿Es el tipo más inapropiado para esos datos?
  • 🎨 Creatividad: ¿Hay algo inesperadamente horrible?
  • ⚙️ Dominio de ggplot2: A más horrible y más código, más puntos

9 figuras en competencia · Máximo 3 minutos por presentación

Daniel Carvajal

library(ggplot2)
cars <- mtcars
cars$carro <- rownames(mtcars)

ggplot(cars, aes(x = carro, y = mpg)) +
  geom_point()
ggplot(cars, aes(x = carro, y = mpg, color = factor(cyl))) +
  geom_point()
ggplot(cars, aes(x = carro, y = mpg, color = factor(cyl), size = hp)) +
  geom_point()

ggplot(cars, aes(x = carro, y = mpg, color = factor(cyl), size = hp)) +
  geom_point() +
  geom_text(aes(label = carro))

ggplot(cars, aes(x = carro, y = mpg, color = factor(cyl), size = hp)) +
  geom_point() +
  geom_text(aes(label = carro)) +
  scale_colour_manual(
    values = c(
      "4" = "#FFFF99",
      "6" = "#7FFF04",  
      "8" = "#FF1493"   
    )
  )

ggplot(cars, aes(x = carro, y = mpg, color = factor(cyl), size = hp)) +
  geom_point() +
  geom_text(aes(label = carro)) +
  scale_colour_manual(
    values = c(
      "4" = "#FFFF99",
      "6" = "#7FFF04",  
      "8" = "#FF1493"   
    )
  ) +
  labs(
    title = "Carros, rendimiento, potencia, cilindros y una visualización insuperable",
    subtitle = "Me encanta cómo NO se ve nada en el eje x jeje",
    caption = "APA enloqueció y ordenó que este es el nuevo formato de presentación de figuras (Fuente: Me)",
    x = "Nombre del carro",
    y = "Rendimiento en millas/galón",
    color = "Cilindros",
    size = "Caballos de fuerza"
  )



ggplot(cars, aes(x = carro, y = mpg, color = factor(cyl), size = hp)) +
  geom_point() +
  geom_text(aes(label = carro)) +
  scale_colour_manual(
    values = c(
      "4" = "#FFFF99",
      "6" = "#7FFF04",  
      "8" = "#FF1493"   
    )
  ) +
  labs(
    title = "Carros, rendimiento, potencia, cilindros y una visualización insuperable",
    subtitle = "Me encanta cómo NO se ve nada en el eje x jeje",
    caption = "APA enloqueció y ordenó que este es el nuevo formato de presentación de figuras (Fuente: Me)",
    x = "Nombre del carro",
    y = "Rendimiento en millas/galón",
    color = "Cilindros",
    size = "Caballos de fuerza",
    tag = "Figura para miopes"
  )

ggplot(cars, aes(x = carro, y = mpg, color = factor(cyl), size = hp)) +
  geom_point() +
  geom_text(aes(label = carro)) +
  scale_colour_manual(
    values = c(
      "4" = "#FFFF99",
      "6" = "#7FFF04",  
      "8" = "#FF1493"   
    )
  ) +
  labs(
    title = "Carros, rendimiento, potencia, cilindros y una visualización insuperable",
    subtitle = "Me encanta cómo NO se ve nada en el eje x jeje",
    caption = "APA enloqueció y ordenó que este es el nuevo formato de presentación de figuras (Fuente: Me)",
    x = "Nombre del carro",
    y = "Rendimiento en millas/galón",
    color = "Cilindros",
    size = "Caballos de fuerza",
    tag = "Figura para miopes"
  ) +
  theme_dark() 


ggplot(cars, aes(x = carro, y = mpg, color = factor(cyl), size = hp)) +
  geom_point() +
  geom_text(aes(label = carro)) +
  scale_colour_manual(
    values = c(
      "4" = "#FFFF99",
      "6" = "#7FFF04",  
      "8" = "#FF1493"   
    )
  ) +
  labs(
    title = "Carros, rendimiento, potencia, cilindros y una visualización insuperable",
    subtitle = "Me encanta cómo NO se ve nada en el eje x jeje",
    caption = "APA enloqueció y ordenó que este es el nuevo formato de presentación de figuras (Fuente: Me)",
    x = "Nombre del carro",
    y = "Rendimiento en millas/galón",
    color = "Cilindros",
    size = "Caballos de fuerza",
    tag = "Figura para miopes"
  ) +
  theme_dark() +
  coord_polar()


ggplot(cars, aes(x = carro, y = mpg, color = factor(cyl), size = hp)) +
  geom_point() +
  geom_text(aes(label = carro)) +
  scale_colour_manual(
    values = c(
      "4" = "#FFFF99",
      "6" = "#7FFF04",  
      "8" = "#FF1493"   
    )
  ) +
  labs(
    title = "Carros, rendimiento, potencia, cilindros y una visualización insuperable",
    subtitle = "La gráfica es más ambigua que la frase: el niño vió a la niña con un telescopio",
    caption = "APA enloqueció y ordenó que este es el nuevo formato de presentación de figuras (Fuente: Me)",
    x = "Nombre del carro",
    y = "Rendimiento en millas/galón",
    color = "Cilindros",
    size = "Caballos de fuerza",
    tag = "Figura para miopes"
  ) +
  theme_dark() +
  coord_polar() 
  
ggplot(cars, aes(x = carro, y = mpg, color = factor(cyl), size = hp)) +
  geom_point() +
  geom_text(aes(label = carro)) +
  scale_colour_manual(
    values = c(
      "4" = "#FFFF99",
      "6" = "#7FFF04",  
      "8" = "#FF1493"   
    )
  ) +
  labs(
    title = "Carros, rendimiento, potencia, cilindros y una visualización insuperable",
    subtitle = "La gráfica es más ambigua que la frase: el niño vió a la niña con un telescopio",
    caption = "APA enloqueció y ordenó que este es el nuevo formato de presentación de figuras (Fuente: Me)",
    x = "Nombre del carro",
    y = "Rendimiento en millas/galón",
    color = "Cilindros",
    size = "Caballos de fuerza",
    tag = "Figura para miopes"
  ) +
  theme_dark() +
  coord_polar() +
  theme(
    plot.background = element_rect( fill = "#cbff0f")
  ) +
  theme(
    plot.title = element_text(color = "#FF1493", size = 13, face = "bold"),
    plot.subtitle = element_text(color = "#FF1493", size = 12),
    axis.title.x = element_text(color = "#FF1493", size = 19),
    axis.title.y = element_text(color = "#FF1493", size = 35),
    plot.caption = element_text(color = "#FF1493", size = 10, face = "bold"),
    plot.tag = element_text(color = "#FF1493")
  )

  

Juan F. Villamil

#Se requiere de ggplot2 (tidyverse) y de eegkitdata, para que funcionen
#Solo usarlo en caso de no tenerlos instalados
#install.packages("eegkitdata")
#install.packages("tidyverse")

#Cargar los paquetes necesarios
library(tidyverse)
library(eegkitdata)

#Datos para construir la grafica
data("eegdata")
sueño_data <- eegdata
glimpse(sueño_data)

#Explorando los datos
sueño_data |> count(time, sort = TRUE)
sueño_data |> count(voltage, sort = TRUE)

#Creando una figura que sea irreverente
ggplot(sueño_data, aes (x = time, y = voltage, colour = subject)) +
  geom_point(alpha = 0.6) +
  geom_smooth()

#Grafica completamente irreverente con pesimo diseño
ggplot(sueño_data, aes (x = time, y = voltage, colour = subject)) +
  geom_point(alpha = 0.6) +
  geom_smooth() +
  scale_colour_manual(
    values = c("#0000ff", "#ff0000", "#1000ff", "#0013ff", "#0230ff",
               "#7400ff", "#0010ff", "#00003f", "#0000f3", "#0ff", "#ffff9f", 
               "#f00346", "#ff0234", "#ff4535", "#ff0834", "#f45550", "#f54300",
               "#f35000", "#f65050", "#ff0340")) +
labs(
  title = "ReCOPILACIoN InNECESARIAMENTE lARGA de tODO EL sUEÑO mUNDIAL",
  subtitle = "aNALISIS pROXIMATORIO dEL tIEMPO",
  caption = "wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww",
  x = "segundasos, no?",
  y = "ELECTROSOIDO",
  colour = "tipo HOLLAAAAAAAA"
) +
theme(
  text = element_text(colour = "yellow"),
  plot.background = element_rect(fill = "#3ca60c"),
  panel.background = element_rect(fill = "#d39"),
  panel.grid.major = element_line(
    color = "#a1a1a1", linewidth = 3),
  panel.grid.minor = element_line(color = "#7a8700")
)
  
  

Laura Sofia Cortes

#imagen fea
# Cargar
library(tidyverse)

# 
datos_grafico <- LifeCycleSavings |> 
  rownames_to_column(var = "pais")

# ggplot
ggplot(
  data = datos_grafico, 
  mapping = aes(
    x = pop15, 
    y = ddpi, 
    colour = pais,  # color por país
    shape = pais    #forma por pais
  )
) +
  
  # geom_col
  geom_col(fill = "#c0ff38", alpha = 0.8) + 
  
  #geom_line
  geom_line(colour = "purple", linewidth = 4) +
  
  #geom_jitter
  geom_jitter(size = 7, alpha = 0.9) +
  
  # 
  scale_colour_viridis_d(option = "inferno") +
  
  # TEXTOS EN MAYÚSCULA
  labs(
    title    = "GRAFico de algo???",
    subtitle = "MUUUuuChassSsSsS$S$S KCoSa$ ",
    caption  = "Hecho con R 0-0",
    x        = "EDAD MENOR A 15",
    y        = "INGRESO"
  ) +
  
  theme_dark() +
  theme (
    plot.title = element_text (color="#FC7B14", size=40, face="bold" ),
    plot.subtitle = element_text(color= "#C72AE8", size=35, face="bold"),
    plot.caption = element_text(color= "#FCF912", size=10),
    axis.title.x = element_text(color= "#FCF912", size=20), 
    axis.title.y = element_text(color= "#FCCFF9", size=20),
    plot.background = element_rect(fill = "blue"),
    panel.background = element_rect(fill="#00FF19"))

Luisa Munoz

# cargar paquetes necesarios
library(tidyverse)
library(palmerpenguins)

pinguinos<- penguins
pinguinos <- drop_na(penguins)

#codigo
ggplot(pinguinos, aes(x = island, y = body_mass_g, fill = island))+
  geom_dotplot(
    binaxis = "y",
    stackdir = "center", # apila los puntos al centro
    dotsize = 30, # tamaño de los puntos
    stackratio = 0.1, # espacio entre los puntos
    color = "#D98116",
    binwidth = 12, #ancho de los intervalos
    alpha = 0.8
  ) +
  scale_fill_manual(
    values = c(
      "Biscoe" = "#147339",
      "Dream" = "#19D916",
      "Torgersen" = "#C5D916")
  ) +
  labs(
    title = "MAs4 C0rp0r4l D3 l0s p|Ngüin05 p0R I5La",
    x = "IsLAaA", y = "MAsitA (g)"
 )+
  theme(
    plot.title = element_text(
      hjust = 0.5,    # alineacion horizontal
      size = 19,
      angle = 180,
      colour = "#FF1A1A",
      vjust = 3),  # alineacion vertical
    
    #titulo del eje x
    axis.title.x = element_text(
      angle = 20, colour = "#4B2687", face = "bold"),
    
    # titulo del eje y
    axis.title.y = element_text(
      angle = 100, colour = "#6200FF", face = "bold"),
    
    # texto del eje y
    axis.text.y = element_text(
      color = "#FF00DD", angle = 180, size = 16
    ),
    # texto del eje x
    axis.text.x = element_text(
      color = "#00FFBB", size = 16, angle = 45
    ),
    # color del fondo
    plot.background = element_rect(
      fill = "#F2FF00"), 
    
    # color del panel
    panel.background = element_rect(
      fill = "#FFBB00"), 
    panel.grid = element_blank(),
    
    legend.background = element_rect(
      fill = "#F99CFF" ),
    legend.key = element_rect(
      fill = "#051042"),
    legend.text = element_text(
      colour = "#61A8FF", angle = 200, size = 12)
    ) +
  # "texto" encima
  annotate(
    "text",
    x = 3, y = 4750,
    label = "👀️",
    colour = "red",
    size = 9
  )+
  annotate(
    "text",
    x = 2, y = 4900,
    label = "👀️",
    colour = "red",
    size = 8.5
    )+
  annotate(
    "text",
    x = 1, y = 6400,
    label = "👀️",
    colour = "red",
    size = 8.5)

Marcela Puentes

#####. grafica fea
#install.packages("gapminder")
library(gapminder)
library(tidyverse)
glimpse(gapminder)
ggplot(
  gapminder,
  aes(
    x      = country,
    y      = lifeExp,
    colour = continent
  )
) +
  geom_violin(fill = 2) +
  geom_jitter(
    width = 0.3,
    alpha = 0.5,
    size  = 4
  ) +
  geom_boxplot(fill = "#79fa07", alpha = 2) +
  
  annotate(
    "text",
    x = 60,
    y = 55,
    label = "GAPMINDER",
    size = 10,
    color = "red",
    fontface = "bold.italic",
    angle = 60
  ) +
  
  labs(
    title    = "EXPECTATIVA DE VIDA",
    subtitle = "de la base de datos gapminder",
    x        = "continente",
    y        = "expectativa de vida",
    colour   = "continente",
    caption  = "Datos: base de datos"
  ) +
  
  theme(
    legend.position = "none",
    
    axis.title = element_text(
      size = 10,
      face = "plain",
      color = "#79fa07",
      angle = 15
    ),
    
    axis.title.x = element_text(
      margin = margin(t = -70)
    ),
    
    plot.title = element_text(
      face = "bold.italic",
      size = 35,
      color = "#00FFFF",
      angle = 0
    ),
    
    plot.subtitle = element_text(
      color = "#1807fa",
      angle = 4
    ),
    
    plot.background = element_rect(
      fill = "magenta",
      color = "green",
      linewidth = 5,
    ),
    
    panel.background = element_rect(
      fill = "#001eff"
    )
  ) +
  coord_polar() 

Maria Isabel Meza

library(ggplot2)

#datos <- read.csv(file.choose())
datos <- read.csv("dataset_depressao_infantil_public.csv")

View(datos)

str(datos)

#Ver la variables
names(datos) <- c(
  "id",
  "edad",
  "nivel_educativo",
  "codigo_nivel_educativo",
  "grado_escolar",
  "composicion_hogar",
  "codigo_composicion_hogar",
  "tiempo_pantalla_min_dia",
  "influencia_redes_sociales",
  "codigo_influencia_redes",
  "usa_redes_sociales",
  "actividad_fisica_fuera_colegio",
  "codigo_actividad_fisica_fuera_colegio",
  "realiza_actividad_fisica",
  "dias_actividad_fisica_semana",
  "puntaje_cdi_total",
  "cdi_mayor_igual_13",
  "cdi_mayor_igual_17"
)

#crear una nueva variable para ver el tiempo en horas
datos$tiempo_pantalla_horas_dia <- datos$tiempo_pantalla_min_dia / 60

View(datos)
#redondear el resultado a dos decimales

datos$tiempo_pantalla_horas_dia <- round(datos$tiempo_pantalla_min_dia / 60, 2)

#Variables que quiero usar

datos_grafica <- datos[, c(
  "tiempo_pantalla_horas_dia",
  "puntaje_cdi_total",
  "usa_redes_sociales",
  "cdi_mayor_igual_17"
)]
#Quiero ver los resultados del estudio, porque si jejeje

ggplot(datos_grafica, aes(x = tiempo_pantalla_horas_dia, y = puntaje_cdi_total)) +
  geom_point() +
  labs(
    title = "Relación entre tiempo de pantalla y puntaje CDI",
    subtitle = "Me da curiosidad ver la relación de los datos",
    x = "Tiempo de pantalla al día en horas",
    y = "Puntaje total CDI"
  ) +
  theme_minimal()
#Habrá correlación?, esto me está gustando
correlacion <- cor(
  datos_grafica$tiempo_pantalla_horas_dia,
  datos_grafica$puntaje_cdi_total,
  use = "complete.obs"
)
ggplot(datos_grafica, aes(x = tiempo_pantalla_horas_dia, y = puntaje_cdi_total)) +
  geom_point() +
  geom_smooth(method = "lm") +
  labs(
    title = "Relación entre tiempo de pantalla y puntaje CDI",
    subtitle = "Gráfica de dispersión con línea de tendencia",
    x = "Tiempo de pantalla al día en horas",
    y = "Puntaje total CDI"
  ) +
  theme_minimal()

#Ahora sí, no más distracción, vamos al grano

ggplot(
  datos_grafica,
  aes(
    x = tiempo_pantalla_horas_dia,
    y = puntaje_cdi_total,
    colour = factor(usa_redes_sociales),
    size = puntaje_cdi_total,
    shape = factor(cdi_mayor_igual_17)
  )
) +
  geom_point(alpha = 0.8) +
  geom_text(
    aes(label = puntaje_cdi_total),
    size = 8,
    colour = "red"
  ) +
  geom_smooth(method = "lm", colour = "#FF00FF", linewidth = 2) +
  scale_colour_manual(
    values = c(
      "0" = "#00FFFF",
      "1" = "#FF1493"
    ),
    labels = c(
      "0" = "No usa redes sociales",
      "1" = "Usa redes sociales"
    )
  ) +
  labs(
    tag = "Figura 1: advertencia visual",
    title = "Tiempo de pantalla, CDI y una gráfica que claramente necesita terapia visual",
    subtitle = "Entre más pasae el tiempo más normal la veo,será la hora",
    caption = "eshorrible pero es 10000% REAL!!!",
    x = "Tiempo de pantalla al día en horas, QUE LE PASA A LA GENERACIÓN DE HOY?",
    y = "Puntaje total CDI, osea papito ud está triste!",
    colour = "Uso de redes sociales",
    size = "Puntaje CDI",
    shape = "CDI ≥ 17"
  ) +
  theme_dark() +
  geom_point(alpha = 0.8) +
  geom_text(
    aes(label = puntaje_cdi_total),
    size = 2,
    colour = "red"
  ) +
  geom_path(
    aes(group = factor(usa_redes_sociales)),
    linewidth = 1,
    alpha = 0.8,
    colour = "#7FFF00"
  )

Mario Cordoba

# Cargar paquetes
library(tidyverse)
library(palmerpenguins)

# Limpiar datos
pinguinos <- penguins |> 
  drop_na(
    species,
    body_mass_g,
    flipper_length_mm,
    sex,
    island
  )


# FIGURA 


ggplot(
  pinguinos,
  aes(flipper_length_mm, body_mass_g
  )
) +
  
# CAPA APA 7 


geom_point(
  size = 2,
  alpha = .7,
  color = "black"
) +
  
  geom_smooth(
    method = "lm",
    se = TRUE,
    color = "black",
    linewidth = .8
  ) +
  
  facet_wrap(
    ~ species,
    nrow = 1
  ) +
  
  labs(
    x = "Longitud de la aleta (mm)",
    y = "Masa corporal (g)"
  ) +
  
  theme_classic(base_size = 12) +
  

# Ahora sí lo pongo bien pro
# Puntotes de colores 
geom_point(
  aes(
    colour = island,
    size = body_mass_g
  ),
  alpha = .7
) +
  
  scale_colour_manual(
    values = c(
      "hotpink",
      "chartreuse",
      "cyan"
    )
  ) +
  
  # Regresión suave, pa que se note que sé funciones
  geom_smooth(
    colour = "yellow",
    linewidth = 6,
    se = FALSE
  ) +
  
  # Texto pa´dejar todo claro
  annotate(
    "text",
    x = 200,
    y = 4000,
    label = "casi APA",
    colour = rgb(57, 255, 20, maxColorValue = 255),
    size = 8,
    angle = 45
  ) +
  
  annotate(
    "text",
    x = 175,
    y = 5000,
    label = "bien pro",
    colour = "blue",
    size = 3,
    angle = -45
  ) +
  
  
  # Título 
  labs(
    title = "mAsA x aLeTaS",
    subtitle = "OK completar",
    colour = "ISLAND, traducir",
    size = "la MAZa"
  ) +
  
 
#  el  tema  Fondo 


theme(panel.background = element_rect(
    fill = "orange"),
  
  # Fondo general amarillo
  plot.background = element_rect(
    fill = "yellow"
  ),
  
# sus buenas guías cyan
  
  panel.grid.minor = element_line(
    colour = "cyan",
    linewidth = 1
  ),
  
  # Título corridito
  plot.title = element_text(
    size = 22,
    face = "bold",
    colour = "purple",
    angle = 20
  ))

Monica Echeverria

library(palmerpenguins)
library(tidyverse)

pinguinos <- drop_na(penguins)

ggplot(
  pinguinos,
  aes(
    x = body_mass_g,
    fill = species
  )
) +
  geom_density(
    alpha = 0.9,
    colour = "yellow",
    linewidth = 2
  ) +
  scale_fill_manual(
    values = c(
      "Adelie" = "#FF00FF",
      "Chinstrap" = "#00FF00",
      "Gentoo" = "#00FFFF"
    )
  ) +
  labs(
    title = "Hola, hablaremos sobre los pingunos",
    subtitle = "son muy bellos",
    caption = "nos caen bien"
  ) +
  theme(
    plot.background = element_rect(
      fill = "black",
      colour = "red",
      linewidth = 5
    ),
    panel.background = element_rect(
      fill = "orange",
      colour = "purple",
      linewidth = 4
    ),
    panel.grid.major = element_line(
      colour = "#00FF00",
      linewidth = 2
    ),
    panel.grid.minor = element_line(
      colour = "cyan",
      linewidth = 1
    ),
    text = element_text(
      family = "Comic Sans MS",
      colour = "hotpink",
      size = 24
    ),
    axis.text.x = element_text(
      angle = 73,
      colour = "yellow"
    ),
    axis.text.y = element_text(
      angle = -40,
      colour = "white"
    ),
    legend.position = "bottom",
    legend.background = element_rect(
      fill = "red",
      colour = "yellow",
      linewidth = 3
    ),
    legend.text = element_text(
      size = 20,
      colour = "cyan"
    ),
    legend.title = element_text(
      size = 24,
      colour = "#00FF00"
    ),
    plot.title = element_text(
      size = 40,
      face = "bold.italic",
      hjust = 0.5
    ),
    plot.subtitle = element_text(
      size = 28,
      face = "bold",
      colour = "green"
    ),
    plot.caption = element_text(
      size = 22,
      colour = "white"
    )
  )

Santiago Quiroga

library(tidyverse)
pollos <- ChickWeight

pollos |>
  ggplot(aes(x = weight, y = Time, color = Diet, size = weight)) +
  geom_line(aes(group = Chick), linetype = "twodash", linewidth = 2, alpha = 0.7) +
  scale_color_manual(values = c("#FF00FF", "#00FF00", "#FFFF00", "#8B4513")) +
  scale_size_continuous(range = c(3, 25)) + 
  labs(
    title = "E v O l U c I o N  dE  pOlLoS",
    subtitle = "Gráfica 100% clara y objetiva",
    x = "PESO (Unidades Misteriosas)",
    y = "TIEMPO (Siglos)",
    color = "Dieta Secreta",
    size = "Gordura"
  ) +
  theme(
    plot.background = element_rect(fill = "#FF4500", color = "blue", linewidth = 10),
    panel.background = element_rect(fill = "#00FFFF"),
    axis.text.y = element_text(angle = 42, color = "green", size = 8),
    plot.title = element_text(size = 35, color = "yellow", face = "italic", hjust = 0.8),
    legend.position = c(0.5, 0.5) 
  ) +
  coord_polar()

Votación

¿Cuál es la más fea?

Elige a la ganadora


Daniel Carvajal

Juan F. Villamil

Laura Sofia Cortes

Luisa Munoz

Marcela Puentes

Elige a la ganadora (cont.)


Maria Isabel Meza

Mario Cordoba

Monica Echeverria

Santiago Quiroga