Введение

Фильм Американский психопат кажется довольно нетривиальным, авторским кино, в котором главный персонаж Партрик Бейтман, который, казалось бы, достиг головокружительного успеха во всех сферах своей жизни, неожиданно приходит к безумию и отчаянию. Так как он является единственным персонажем фильма, который хоть сколько-нибудь пытается рефлексировать, будем считать его персонажем думающим в противовес другим персонажам, являющимся второстепенными.

В этой работе я хочу проанализировать социальную сеть персонажей фильма, чтобы визуализировать взаимодействие главного персонажа с другими.

Источником данных является датасет из networkdata

Загружаем необходимые библиотеки и данные

library(networkdata)
library(igraph)
library(tidyverse)
library(ggraph)
options(warn = -1)  
data(movie_47)

Создаем тиббл на основе наших данных

psycho_characters <- tibble(name = V(movie_47)$name) |> 
  mutate(class = if_else(name == "BATEMAN", "thinking", 
                         ifelse(name %in% c("OWEN", "KIMBALL", "CARRUTHERS", "COURTNEY", "DAISY", "EVELYN", "JEAN", "PRICE"), "not thinking", "neutral")))

psycho_characters
## # A tibble: 26 × 2
##    name       class       
##    <chr>      <chr>       
##  1 BATEMAN    thinking    
##  2 CARNES     neutral     
##  3 CARON      neutral     
##  4 CARRUTHERS not thinking
##  5 CHRISTIE   neutral     
##  6 COP CAR    neutral     
##  7 COURTNEY   not thinking
##  8 DAISY      not thinking
##  9 DOORMAN    neutral     
## 10 ELIZABETH  neutral     
## # ℹ 16 more rows

Присваиваем классы каждому персонажу в наших данных.

V(movie_47)$class <- psycho_characters$class

Строим социальную сеть

gplot <- ggraph(movie_47, layout = "fr") +  # Используем алгоритм Fruchterman-Reingold
  geom_edge_link(aes(edge_width = weight), alpha = 0.2, color = "grey") + 
  geom_node_label(aes(label = name, fill = class), color = "white", size = 3) +
  scale_fill_manual(values = c("thinking" = "#40bf80", 
                               "not thinking" = "#ff4d4d", 
                               "neutral" = "#b3b3b3")) +  # Цветовая палитра для классов
  theme_graph(base_family = "sans") +
  labs(title = "Персонажи Американского психопата",
       subtitle = "Классификация персонажей по степени осознания") +
  theme(legend.position = "bottom")

gplot

Вывод

Из визуализации можно сделать вывод о том, что главный персонаж очень активно взаимодействует с второстепенными персонажами, которые не достигли определенного уровня осознания реальности, что и заставляет его к концу фильма достичь определенного катарсиса, так как он задается глубокими вопросами о том, насколько все то, что его окружает, на самом деле важно или все же иллюзорно…