Code
library(tidyverse)
library(ggraph)
library(tidygraph)
library(igraph)
data <- readr::read_csv("data/data.csv", show_col_types = FALSE)Love Island is back, and with that comes the drama. I will explore some of the connections between the contestants from a very small graph perspective.
June 25, 2026
Love Island is baaaack, We got the drama and everything. One of the aspects of reality dating shows in general is the idea of a love triangle. True love triangles typically don’t happen in these reality dating shows, as they are heavily hetero normative. I’m thus changing the premise of my analysis to be a couple of groups of people who have all been coupled up with each other at some point in the show. Specifically, a set of two women and two men who have all been coupled up with each other at some point in the show. I am calling these “double dates” for lack of a better word. I will explore the number of double dates per season and visualize the connections between contestants in each season.
I have limited myself in this post to only look at the Love Island UK version of the show. I have also limited myself to only looking at past seasons, as there is one ongoing right now. This gives us a total number of seasons of 12 to work with.
chart_graph <- function(data) {
as_tbl_graph(data, directed = FALSE) |>
ggraph(layout = "fr") +
geom_edge_link() +
geom_node_point() +
geom_node_text(aes(label = name), repel = TRUE) +
theme_graph() +
theme(
plot.background = element_rect(fill = "transparent", color = NA),
panel.background = element_rect(fill = "transparent", color = NA)
)
}I will be treating each contestant as a node in a graph, drawing an edge between them if they have been coupled up at any given time. What makes these types of graphs a little bit atypical is that we have this artificial sparsity. This is due to the fact that we don’t have same-sex coupling happening in the show. Only contestants who have actively been coupled up will be shown in the graph.
You can use the tabset to explore our coupling graph for each season of the show. A couple of interesting observations show up, I’ll list what I see in no particular order of importance.
I have listed out all of the double dates below for each season.
What is of note is that Conor is part of every one but one of them for season 12.
No double dates this season.
No double dates this season.
No double dates this season.
Is this a crazy outlier or a new trend? I guess we will all have to tune in to see for ourselves.
split(data, data$season) |>
map(find_double_dates) |>
lengths() |>
as_tibble() |>
mutate(season = row_number()) |>
ggplot2::ggplot(aes(x = season, y = value)) +
ggplot2::geom_col() +
ggplot2::scale_x_continuous(breaks = unique(data$season)) +
ggplot2::labs(
title = "Number of double dates per season",
x = "Season",
y = "Number of double dates"
) +
theme(
plot.background = element_rect(fill = "transparent", color = NA),
panel.background = element_rect(fill = "transparent", color = NA)
)