tvthemes: Les Simpsons

Cette semaine on est transporté à Springfield. Ce #Tidytuesday nous fait découvrir tous les invités spéciaux depuis la première saison de la populaire émission télévisée Les Simpsons. Pour illustrer le tout, j’ai identifié l’invité le plus populaire, comparé son nombre d’apparition par saison par rapport aux autres invités et utilisé pour la première fois tvtheme.



CONTEXTE

Les données de cette semaine sont disponible via wikipedia.

Dans ces données, on peut constater quels sont les invités spéciaux des 30 premières saisons. Outre la distribution régulière d’acteurs de voix de la série, des stars ont été un élément essentiel de la série télévisée d’animation américaine The Simpsons. La famille éponyme: Homer, Marge, Bart, Lisa et Maggie.

En fait, les voix des invités proviennent d’un large éventail de professions, notamment les acteurs, les athlètes, les auteurs, les musiciens, les artistes, les politiciens et les scientifiques. Dans les premières années de la série, la plupart des invités ont exprimé des personnages originaux, mais à mesure que la série se poursuivait, le nombre de personnes apparaissant comme telles a augmenté.



OBJECTIFS

  1. Identifier l’invité qui est présent le plus souvent.
  2. Visualiser l’évolution dans le temps (au travers des saisons) de l’apparition de cet invité le plus populaire et le comparer avec le total des autres invités présentés.
  3. Me référer à tvtheme (crée par Ryo Nakagawara) pour les couleurs et la police de caractère.



IMPORTER

simpsons <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-08-27/simpsons-guests.csv")
FALSE Parsed with column specification:  
FALSE cols(
FALSE season = col_character(),
FALSE number = col_character(),
FALSE production_code = col_character(),
FALSE episode_title = col_character(),
FALSE guest_star = col_character(),
FALSE role = col_character()
FALSE
)



EXPLORER

summary(simpsons)
##     season             number          production_code     
## Length:1200 Length:1200 Length:1200
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
## episode_title guest_star role
## Length:1200 Length:1200 Length:1200
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character

Les saisons sont stockés sous forme de texte, il faut modifier le format pour créer un graphique. Toutes les autres informations nécessaire sont déjà dans la base de donnée.



PRÉPARER

#Combien y a-t-il de saison?  
inspect_season<-simpsons %>%
inspect_cat()

season<-inspect_season$levels$season %>%
filter(!value=="Movie") %>%
mutate(value=as.numeric(value))

#aucune données pour les saisons 15 et 20

#Identifier l'acteur qui revient le plus souvent dans tous les épisodes
simpsons_freq <- simpsons %>%
mutate(season=as.numeric(season)) %>%
inspect_cat()

acteur<-simpsons_freq$levels$guest_star

#Marcia Wallace

#Créer la BD pour générer le graphique
simpsons_cat <- simpsons %>%
mutate(season=as.numeric(season)) %>%
mutate(acteur=ifelse(guest_star %in% c("Marcia Wallace"),"Marcia Wallace","Autre")) %>%
group_by(season, acteur) %>%
summarise(nb=dplyr::n()) %>%
filter(!season %in% NA) %>%
spread(acteur, nb) %>%
mutate(`Marcia Wallace`=ifelse(is.na(`Marcia Wallace`), 0, `Marcia Wallace`)) %>%
mutate(pct_Marcia=`Marcia Wallace`/(`Marcia Wallace`+Autre)*100) %>%
mutate(pct_autre=Autre/(`Marcia Wallace`+Autre)*100) %>%
select(season,pct_Marcia,pct_autre) %>%
gather(acteur, pourcentage, -season)%>%

#Pour mettre les étiquettes de données seulement sur les valeurs concernant Marcia Wallace
simpson_MW<-simpsons_cat %>%
filter(acteur=="pct_Marcia") %>%
mutate(pourcentage=ifelse(pourcentage==0, NA, pourcentage))



VISUALISER

#Graphique  #loadfonts()  
gg<-ggplot(simpsons_cat, aes(x=season, y=pourcentage, group=acteur, fill=acteur))
gg <- gg + geom_bar(stat="identity", position="stack", width=0.80,color="#FEE8C8", fill="#7199E1" )
gg <- gg + geom_bar(data=simpson_MW, aes(x=season, y=pourcentage, group=acteur, fill=acteur),stat="identity", position="stack", width=0.85,color="#FEE8C8", fill="#FEE8C8")
#ajouter les étiquettes de données
gg<-gg + geom_text(data=simpson_MW, aes(x=season, y=pourcentage, label=paste0(round(simpson_MW$pourcentage,0),"%", sep="")),
color="#46732EFF", size=3, position = position_stack(vjust = 0.5), family="Akbar", fontface="bold")
gg<- gg + coord_flip()
#retirer la légende
gg <- gg + theme(legend.position = "none")
#ajuster les axes
gg <- gg + scale_y_continuous(breaks=seq(0,100,100), limits = c(0, 103), expand = c(0, 0), labels = function(x) paste0(x, "%"))
gg <- gg + scale_x_continuous(breaks=seq(1,30,1), limits = c(0, 31), expand = c(0, 0))
#modifier le thème
gg <- gg + theme(panel.border = element_blank(),
panel.background = element_rect(fill="#7199E1"),
plot.background = element_rect(fill ="#7199E1"),
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.y = element_blank(),
axis.ticks.x = element_blank())
#ajouter les titres
gg<-gg + labs(title="Les Simpsons: Est-ce que vous aimez Edna?",
subtitle="\nMarcia Wallace est l'actrice qui est invitée le plus souvent dans cette\ntélésérie. Elle est présente dans 13% des épisodes. Au cours des saisons,\nsa présence varie. Elle à augmenté jusqu'à 27% de la 1ère à la 9ème\nsaison pour dimunuer à 9% à la 25ème saison, soit la derière saison\navant son décès. ",
x="Saisons",
y=" ",
caption="SOURCE: Wikipedia | DESIGN: Johanie Fournier, agr.")
gg<-gg + theme(plot.title = element_text(size=20, hjust=0,vjust=0, face="bold", family="Akbar", color="#fed90f"),
plot.subtitle = element_text(size=12, hjust=0,vjust=0, family="Akbar", color="#46732EFF"),
plot.caption = element_text(size=8, hjust=1,vjust=0, family="Akbar", color="#D1C19E"),
axis.title.y = element_text(size=10, hjust=1,vjust=0.5, family="Akbar", color="#FEE8C8"),
axis.title.x = element_blank(),
axis.text.x = element_text(size=10, hjust=0.5,vjust=0.5, family="Akbar", color="#FEE8C8"),
axis.text.y = element_text(size=10, hjust=0.5,vjust=0.5, family="Akbar", color="#FEE8C8"))

Voici ce que ça donne:


CONCLUSION

La présence de Marcia Wallace varie dans le temps et je pense que la meilleure façon de bien représenter ces variations est de le faire avec un histogramme.



Alors, tu veux en savoir plus sur ma démarche? Un épisode de podcast sera 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.

Publicités

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.