Mixer histogrammes, points et barres

Cette semaine on regarde la loi de Moore. Ce #Tidytuesday nous fait découvrir comment évolue dans le temps le nombre de transistors. C’est assez techniques… pour simplifier les choses, je me suis concentrée seulement sur l’évolution des microprocesseurs. Pour illustrer tout ça, j’ai identifié la moyenne du nombre de transistors pour 2018, utilisé des histogrammes, des barres et des points pour faire la comparaison des nombres de transistors pour 2018 entre les différents concepteurs et montrer leur évolution depuis le début de leur contribution dans ce domaine jusqu’en 2018.



CONTEXTE

La loi de Moore fait observer que le nombre de transistors sur les circuits intégrés double environ tous les deux ans. Cet aspect du progrès technologique est important car les capacités de nombreux appareils électroniques numériques sont étroitement liées à la loi de Moore. Cette loi avait été décrite dès 1965 par Gordon E. Moore, cofondateur d’Intel, qui l’a baptisée.

Selon Wikipedia:

« Le nombre de transistors est le nombre de transistors sur un circuit intégré (IC). Il fait généralement référence au nombre de MOSFET (transistors à effet de champ métal-oxyde-semi-conducteur) sur une puce de circuit intégré, car tous les circuits intégrés modernes utilisent des MOSFET (également appelés transistors MOS). Il s’agit de la mesure la plus courante de la complexité des circuits intégrés (bien que la majorité des transistors des microprocesseurs modernes soient contenus dans les antémémoires, qui sont principalement composées des mêmes circuits de cellules mémoire répliqués plusieurs fois). La vitesse à laquelle le nombre de transistors MOS a augmenté a généralement suivi la loi de Moore, qui observait que le nombre de transistors double tous les deux ans environ. »



OBJECTIFS

  1. Comparer les différents concepteurs de microprocesseur avec la moyenne du nombre de transistors en 2018.
  2. Montrer le progrès, pour les différents designer de processeur, depuis leur implication dans la conception de microprocesseurs jusqu’en 2018.
  3. Réaliser ses objectif en créant un visuel qui combine des histogrammes, des points et des barres.



IMPORTER

cpu <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-09-03/cpu.csv")
FALSE Parsed with column specification:  
FALSE cols(  
FALSE   processor = col_character(),  
FALSE   transistor_count = col_double(),  
FALSE   date_of_introduction = col_double(),  
FALSE   designer = col_character(),  
FALSE   process = col_double(),  
FALSE   area = col_double()  
FALSE 
)



EXPLORER

summary(cpu)
##   processor         transistor_count    date_of_introduction  
##  Length:176         Min.   :2.250e+03   Min.   :1970          
##  Class :character   1st Qu.:6.000e+05   1st Qu.:1989          
##  Mode  :character   Median :2.500e+08   Median :2006          
##                     Mean   :2.206e+09   Mean   :2002          
##                     3rd Qu.:2.930e+09   3rd Qu.:2014          
##                     Max.   :3.200e+10   Max.   :2019          
##                     NA's   :6                                 
##    designer            process             area        
##  Length:176         Min.   :    7.0   Min.   :  4.0    
##  Class :character   1st Qu.:   20.0   1st Qu.: 83.0    
##  Mode  :character   Median :   65.0   Median :152.0    
##                     Mean   :  921.2   Mean   :238.1    
##                     3rd Qu.:  675.0   3rd Qu.:355.0    
##                     Max.   :10000.0   Max.   :825.0    
##                     NA's   :9         NA's   :27

Toutes les informations nécessaire sont déjà dans la base de donnée mais, pour arriver à faire le visuel que j’ai en tête, il faudra sérieusement synthétiser les données.



PRÉPARER

#Quel est la moyenne de 2018?  
moy_2018<-cpu %>%     
mutate(transistor_count=as.numeric(transistor_count)) %>%     
filter(date_of_introduction==2018) %>%     
summarise(mean=mean(transistor_count, na.rm =TRUE)) 
 #rep: 9898250000    

#Qui sont les desinger encore présent en 2018?  
desinger_2018<-cpu %>%     
mutate(transistor_count=as.numeric(transistor_count)) %>%     
filter(date_of_introduction==2018)   
#rep: Qualcomm, Apple, Fujitsu, Huawei,  Nvidia    

#Quel est la valeur du processeur au début pour chaque desinger?  
debut<-cpu %>%     
filter(designer %in% c("Qualcomm", "Apple", "Fujitsu", "Huawei", "Nvidia")& !is.na(transistor_count)) %>%       
group_by(designer) %>%      
filter(date_of_introduction==min(date_of_introduction)) %>%       
mutate(deb=transistor_count) %>%       
select(deb, designer) %>%       
ungroup()      

#Quel est la valeur du processeur en 2018 pour chaque desinger?  
fin<-cpu %>%     
filter(designer %in% c("Qualcomm", "Apple", "Fujitsu", "Huawei", "Nvidia") & !is.na(transistor_count)) %>%       
group_by(designer) %>%      
filter(transistor_count==max(transistor_count)) %>%       
mutate(last=transistor_count) %>%       
select(last, designer) %>%       
ungroup()      

#Mettre tout dans une même base de donnée  
data<-debut %>%     
left_join(fin) %>%     
mutate(moy_2018=9898.25) %>%     
mutate(max=2*9898.25)



VISUALISER

#Graphique  
gg<-ggplot(data, aes(x=designer, y=max))  
gg <- gg + geom_chicklet(width=0.45, radius=grid::unit(10, "pt"), fill="#F7F7F7")  
gg <- gg + geom_errorbar(aes(y=moy_2018, x=designer, ymin=moy_2018, ymax=moy_2018), color="black", width=0.45, size=1.5)   
#debut  
gg <- gg +  geom_text(aes(y = 1.00e+03, x = 1),label = "◀", size = 7, family = "HiraKakuPro-W3",  color="#FB8B24")  
gg <- gg +  geom_text(aes(y = 0.110, x = 2),label = "◀", size = 7, family = "HiraKakuPro-W3", color="#FB8B24")  
gg <- gg +  geom_text(aes(y = 4.00e+03, x = 3),label = "◀", size = 7, family = "HiraKakuPro-W3", color="#FB8B24")  
gg <- gg +  geom_text(aes(y = 9.00e+03, x = 4),label = "◀", size = 7, family = "HiraKakuPro-W3", color="#FB8B24")  
gg <- gg +  geom_text(aes(y = 3.00e+03, x = 5),label = "◀", size = 7, family = "HiraKakuPro-W3", color="#FB8B24")  
#fin  
gg <- gg +  geom_text(aes(y = 1.000e+04, x = 1),label = "▶", size = 7, family = "HiraKakuPro-W3", color="#FB8B24")  
gg <- gg +  geom_text(aes(y = 8.786e+03, x = 2),label = "▶", size = 7, family = "HiraKakuPro-W3", color="#FB8B24")  
gg <- gg +  geom_text(aes(y = 6.900e+03, x = 3),label = "▶", size = 7, family = "HiraKakuPro-W3", color="#FB8B24")  
gg <- gg +  geom_text(aes(y = 9.000e+03, x = 4),label = "▶", size = 7, family = "HiraKakuPro-W3", color="#FB8B24")  
gg <- gg +  geom_text(aes(y = 1.800e+04, x = 5),label = "▶", size = 7, family = "HiraKakuPro-W3", color="#FB8B24")  
#Nom des desinger  
gg <- gg +  geom_text(aes(y = 0, x = 1.5),label = "Apple", size = 7, hjust=0,family = "Tw Cen MT", color="#F7F7F7")  
gg <- gg +  geom_text(aes(y = 0, x = 2.5),label = "Fujitsu", size = 7, hjust=0,family = "Tw Cen MT", color="#F7F7F7")  
gg <- gg +  geom_text(aes(y = 0, x = 3.5),label = "Huawei", size = 7, hjust=0,family = "Tw Cen MT", color="#F7F7F7")  
gg <- gg +  geom_text(aes(y = 0, x = 4.5),label = "Nvidia", size = 7, hjust=0,family = "Tw Cen MT", color="#F7F7F7")  
gg <- gg +  geom_text(aes(y = 0, x = 5.5),label = "Qualcomm", size = 7, hjust=0,family = "Tw Cen MT", color="#F7F7F7")  
#Légende sur le graphique  
gg <- gg +  geom_text(aes(y = 16300, x = 5),label = "2018", size = 4.5, hjust=0,family = "Tw Cen MT", color="#FB8B24")  
gg <- gg +  geom_text(aes(y = 9898.25, x = 5.4),label = "moyenne globale 2018", size = 4, hjust=0.5,family = "Tw Cen MT", color="black")  
gg <- gg +  geom_text(aes(y = 3500, x = 5),label = "début", size = 4.5, hjust=0,family = "Tw Cen MT", color="#FB8B24")  
gg<- gg + coord_flip()  
#modifier le thème  
gg <- gg +  theme(panel.border = element_blank(),                      
                  panel.background = element_rect(fill="#2F4253"),                       
                  plot.background = element_rect(fill ="#2F4253"),
                  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="La course des concepteurs de microprocesseur!",
              subtitle="\nLa loi de Moore nous dit que le nombre de transistors dans les circuits intégrés denses double environ\ntous les deux ans. En 2018, la moyenne du nombre de transistors, peu importe le concepteur, se situait\nà 9 898 250 000. Dans les principaux concepteurs, on remarque que c'est Qualcomm qui a le mieux\nprogressé depuis son implication dans ce milieu jusqu'en 2018.\n\n",
              y="nombre de transistors (x 100 000)",
              x=" ",
              caption="\n\nSOURCE:  Wikipedia  |  DESIGN: Johanie Fournier, agr.")  
gg<-gg + theme(plot.title      = element_text(size=26, hjust=0,vjust=0, face="bold", family="Tw Cen MT", color="#F7F7F7"),
               plot.subtitle = element_text(size=12, hjust=0,vjust=0, family="Tw Cen MT", color="#F7F7F7"),
               plot.caption =  element_text(size=8, hjust=1,vjust=0, family="Tw Cen MT", color="#F7F7F7"),
               axis.title.y  = element_blank(),
               axis.title.x  = element_text(size=14, hjust=0.07,vjust=0.5, family="Tw Cen MT", color="#F7F7F7"),
               axis.text.x   = element_text(size=14, hjust=0.5,vjust=0.5, family="Tw Cen MT", color="#F7F7F7"),
               axis.text.y   = element_blank())

Voici ce que ça donne:





CONCLUSION

Le graphique montre clairement l’évolution de chacun des concepteurs ainsi que leur position par rapport à la moyenne globale de 2018. Qualcomm est le concepteur qui a le plus progressé depuis le début de son implication dans la conception de microprocesseurs et Nvidia n’a connu absolument aucune progression.



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.

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.