Cette semaine, le #Tidytuesday nous fait découvrir les films d’horreurs produit entre 2012 et 2017. Comme la base de donnée fourni comprenait le budget investi pour chaque film, j’étais curieuse de voir quel pays dépense le plus pour produire des films d’horreur. J’ai choisi de visualiser cees différences avec un heat map en utilisant geom_tile dans R.
CONTEXTE
Les données de cette semaine proviennent de IMDB.
OBJECTIFS
1)Visualiser les différences dans les sommes investies pour créer des films d’horreur entre les pays.
IMPORTER
horror_movies <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-10-22/horror_movies.csv")
FALSE Parsed with column specification:
FALSE cols(
FALSE title = col_character(),
FALSE genres = col_character(),
FALSE release_date = col_character(),
FALSE release_country = col_character(),
FALSE movie_rating = col_character(),
FALSE review_rating = col_double(),
FALSE movie_run_time = col_character(),
FALSE plot = col_character(),
FALSE cast = col_character(),
FALSE language = col_character(),
FALSE filming_locations = col_character(),
FALSE budget = col_character()
FALSE
)
EXPLORER
summary(horror_movies)
## title genres release_date
## Length:3328 Length:3328 Length:3328
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## release_country movie_rating review_rating movie_run_time
## Length:3328 Length:3328 Min. :1.000 Length:3328
## Class :character Class :character 1st Qu.:4.000 Class :character
## Mode :character Mode :character Median :5.000 Mode :character
## Mean :5.077
## 3rd Qu.:6.100
## Max. :9.800
## NA's :252
## plot cast language
## Length:3328 Length:3328 Length:3328
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## filming_locations budget
## Length:3328 Length:3328
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
Les dates doivent être converties pour être utilisées et l’année doit être extraite. La colonne budget est sous forme de caractère. Pour pouvoir utiliser ces données, il faut extraire la devise et la valeur et convertir cette valeur sous une même base pour être comparable.
PRÉPARER
horror_movies$date<-as.Date(horror_movies$release_date, format="%d-%b-%y")
horror_movies$release_year<-year(horror_movies$date)
horror_movies$devise <- str_match(horror_movies$budget,"^[^0-9]+")[,1]
horror_movies$devise<-str_remove_all(horror_movies$devise,"[\\s]+")
horror_movies$budget_numeric <- as.numeric(gsub(horror_movies$budget, pattern = "[^0-9]",replacement = ""))
#Convertir toutes les devises en $US
conv_devise=data.frame("conversion"=c(1.290, 1.110, 0.760, 0.014, 0.680, 0.016,1,1,0.00085), "devise"=c("£", "€", "CAD", "INR", "AUD", "RUR ","$", NA,"KRW"))
#Sélectionner les 15 pays les plus présents dans les données country<-horror_movies %>%
select('release_country') %>%
group_by(release_country) %>%
summarise(count=n()) %>%
top_n(15) %>%
select('release_country')
movie<-horror_movies %>%
filter(release_country %in% country$release_country) %>%
left_join(conv_devise, by="devise") %>%
mutate(budget_numeric_conv=budget_numeric*conversion) %>%
group_by(release_country, release_year) %>%
summarise(sum=sum(budget_numeric_conv,na.rm=TRUE), count=n()) %>%
mutate(sum=ifelse(sum==0, NA, sum)) %>%
mutate(prix_film=sum/count) %>%
drop_na(release_year)
#Calculer les moyennes
autres<-movie %>%
filter(!release_country=="USA") %>%
group_by() %>%
summarise(moy=mean(sum, na.rm=TRUE))
#Réponse: 24 244 745$US pour période de 5 ans
USA<-movie %>%
filter(release_country=="USA") %>%
summarise(moy=mean(sum, na.rm=TRUE))
#Réponse: 305 680 008$ en 5 ans!!
VISUALISER
#Graphique
gg<- ggplot(data=movie,aes(x = release_year, y= reorder(release_country, desc(release_country))))
gg <- gg + geom_tile(aes(fill=sum), color="black")
gg <- gg + scale_fill_gradient(low = "#F5BB00", high = "#FF4C00", na.value = "#D7D7D7")
#retirer la légende
gg <- gg + theme(legend.position = "none")
#ajuster les axes
gg<-gg + scale_x_continuous(breaks=seq(2012,2017,1), limits=c(2011.5, 2017.5), expand = c(0,0))
#modifier le thème
gg <- gg + theme(panel.border = element_rect(color="black",size=1, fill=NA),
panel.background = element_rect(fill="black"),
plot.background = element_rect(fill="black"),
panel.grid.major.x= element_blank(),
panel.grid.major.y= element_blank(),
panel.grid.minor = element_blank(),
axis.line.x = element_blank(),
axis.line.y =element_blank(),
axis.ticks.x = element_blank(),
axis.ticks.y = element_blank())
#ajouter les titres
gg<-gg + labs(title=" ",
subtitle = " ",
x=" ",
y=" ",
caption="\nSOURCE: IMDB | DESIGN: Johanie Fournier, agr.")
gg<-gg + theme( plot.title = element_blank(),
plot.subtitle = element_blank(),
plot.caption = element_text(size=10, hjust=1,vjust=0.5, family="Tw Cen MT", color="#8B8B8B"),
axis.title.y = element_blank(),
axis.title.x = element_blank(),
axis.text.y = element_text(size=14, hjust=0,vjust=0.5, family="Tw Cen MT", color="#8B8B8B"),
axis.text.x = element_text(size=14, hjust=0.5,vjust=0.5, family="Tw Cen MT", color="#8B8B8B"))
Voici ce que ça donne:
CONCLUSION
Finalement, le heat map créé montre clairement que ce sont les États-Unis qui ont le plus dépensés pour créer des films d’horreur entre 2012 et 2017.
Alors, tu veux en savoir plus sur ma démarche? Un épisode de podcast sera bientôt disponible dans lequel je t’explique toute la réflexion et les concepts de data visualisation qui ont menés à la création de cette viz.