Avec le développement des technologies intelligentes qui génèrent des quantités astronomiques de data, la visualisation des données devient indispensable. En effet, pour pouvoir analyse ses Big Data et les utiliser au mieux dans sa stratégie d’entreprise, il est essentiel de pouvoir les lire et répertorier ses informations business dans des tableaux de bord visuels.
Zoom sur la visualisation des données, sa définition et ses enjeux stratégiques.
Qu’est-ce que la visualisation des données ?
Définition
La visualisation des données (ou data visualization ou dataviz en anglais) désigne le fait de représenter visuellement ses data pour pouvoir déceler et comprendre des informations, les données brutes étant difficilement interprétables et exploitables. Ce processus se fait par des outils analytiques spécifiques et se matérialise par des tableaux (type Excel), des graphiques, des cartes visuelles ou même des infographies regroupées dans des dashboards (tableaux de bord).
En classant, segmentant et scénarisant les données visuellement, une entreprise peut déceler des informations auparavant inaccessibles en un simple coup d’œil. La visualisation des données permet donc à toute organisation de piloter son activité plus efficacement en adoptant une stratégie data-driven et agile.
Les différents types de visualisation
Lorsqu’on aborde le vaste sujet de la visualisation de la data, la première image qui vient à l’esprit est le basique graphique à courbe ou à barre ou le classique diagramme à secteurs. Certes, ces représentations sont très utiles et utilisées, mais ce ne sont pas forcément les plus adaptées pour tous les types de données.
Voici un petit tour d’horizon des représentations visuelles que vous pouvez choisir en fonction de vos besoins.
Les visualisations les plus populaires
Diagrammes en secteur
Tableau (avec textes ou nombres)
Courbe
Histogramme (graphique à barres)
Cartographie
Infographie
Frise chronologique
Les visualisations spécifiques
Graphique par aires
Boîte à moustaches
Compartimentages
Nuage de points, de mots ou de bulles
Vue circulaire
Arborescence classique ou radiale
Diagramme de Gantt
Carte de chaleur
Matrice
Cascade
Entonnoir
Réseau
Graphique polaire
Les visualisations combinées
Il existe aussi des représentations qui combinent plusieurs types de graphiques et qui peuvent se révéler très utiles pour des études Big Data analytics poussées. Par exemple, un histogramme présentant des valeurs minimales et maximales sur plusieurs périodes définies peut intégrer une courbe affichant la moyenne pour chaque période.
Un tableau de bord de visualisation complet intègre plusieurs de ces représentations visuelles afin de rendre compte d’une situation de manière exhaustive. Par exemple, pour l’analyse marketing du trafic d’un site web, il est utile de disposer à la fois de tableaux avec des entrées textes et/ou chiffrées, de diagrammes, de graphiques combinés et de courbes dans son dashboard et ses rapports.
4. I. Les bases de la librairie GGPLOT2
1. Qu’est ce qu’un objet ggplot
Un objet ggplot est l’objet de base de la grammaire de
graph.
Il est initialisé à partir d’un ou plusieurs des éléments
suivants:
- un data frame : toujours le premier
paramètre. Peut être précisé aussi à l’aide du paramètre
‘data=dataframe’
- un ou plusieurs aesthetics: à l’aide de la
fonction aes()
I.2 Aesthetics
Il s’agit des propriétés ( axes de abscisses et des
ordonnes, les couleurs, les formes dessinées, le contenu
des formes, la tailles des formes etc ….) du graphique
permettant de projeter des caractéristiques des
données.
Les aesthetics sont liées aux fonctions geom (types de
graphs, dessins) ajoutes aux graphiques
## Generic code
Cas 1
object <- ggplot(dataframe, aes(x = column_1, y =
column_2))
## or, if you don't need to save the object
Cas 2
ggplot(dataframe, aes(x = column_1, y = column_2))
Exemple:
Mon_graph<-ggplot(data=titanic, aes(y=Fare))
5. I. Les bases de la librairie GGPLOT2
I.3 Creation d’un graphique
Afficher la précision des géoms permet de faire afficher
le graphique.
Cela est réalisé à l’aide des fonction geom_xxx()
NB: les caractéristiques (aes), les data, ainsi que les
types de graphiques (geom) peuvent être utilises de
façon alternatives:
Exemples, les commandes ci-dessous produisent les
mêmes résultats ## Enregistrer un graphique:
1. Ouvrir un graphic device ( pdf, png, etc) à
l’aide des fonctions pdf(), png() …
2. Exécuter le code de création du graphique
3. fermer le graphic device à l’aide de la
fonction dev.off()
## Generic code
Le ‘+’ doit être rajouté à la fin des lignes
geom_histogram()
## Generic code
1.
ggplot(data=titanic, aes(x=Fare))+
geom_histogram()
2.
ggplot(data = titanic) + geom_histogram(aes(x = Fare))
3.
ggplot() + geom_histogram(data = titanic, aes(x = Fare))
6. I. Les bases de la librairie GGPLOT2
I.4 Geoms
Les fonctions de type geom_xxx() permettent de
préciser la nature du graphique ou d’ajouter des
éléments sur un graphique existant et requiert un ou
plusieurs aesthetics (x, y, but
alpha (transparency), color, fill, group, size, shape,stroke
…)
Chaque fonction geom_xxx dispose de différents types
de paramètres:
1 - de paramètres aesthetics indispensables
2 - de paramètres aesthetics acceptés
3 - d’autres types de parametres
## exemples
Cas 1
ggplot(worldcup, aes(x = Time, y = Passes)) +
geom_point()
Cas 2
ggplot(worldcup, aes(x = Time, y = Passes, color =
Position, size = Shots)) + geom_point()
Cas 3
Mon_graph<-ggplot(data=titanic, aes(x=Fare))+
geom_histogram(bins=15)
## aide:
?geom_histogram
7. I. Les bases de la librairie GGPLOT2
I.4 Geoms
Le tableau ci dessous donne des exemples de geom et de paramètres
acceptés.
Function Common aesthetics Common arguments
geom_point() x, y
geom_line() x, y arrow, na.rm
geom_segment() x, y, xend, yend arrow, na.rm
geom_path() x, y na.rm
geom_polygon() x, y
geom_histogram() x bins, binwidth
geom_abline() intercept, slope
geom_hline() yintercept
geom_vline() xintercept
geom_smooth() x, y method, se, span
geom_text() x, y, label parse, nudge_x, nudge_y
8. I. Les bases de la librairie GGPLOT2
I.5 Multiples Geoms
Le langage ggplot permet à l’aide des geoms l’ajout successif
d’information sur un graphique.
Dans l’exemple ci-dessous:
-Nous présentons les joueurs au mondial 2010 suivant le
nombre de leur passe et de leur tirs aux buts (1)
-Nous allons ensuite rajouter des informations sur les joueurs
aux statistiques remarquables (2)
#0
library(dplyr)
noteworthy_players <- worldcup %>% filter(Shots ==
max(Shots) | Passes == max(Passes)) %>%
mutate(point_label = paste(Team, Position, sep = ", "))
#1
ggplot(worldcup, aes(x = Passes, y = Shots))+
#2
geom_point() + geom_text(data = noteworthy_players,
aes(label = point_label), vjust = "inward", hjust = "inward")
## aide:
la libraire ‘dplyr’ simplifie la manipulation des
données.
?mutate
?filter
## aide:
On note ici que l’on a utilise pour ce graphique
des data de deux différents data frame
9. I. Les bases de la librairie GGPLOT2
I.6 l’aesthetics constante
On peut aussi afficher un aesthetics qui prend une
seule valeur pour toute les données ( couleurs,
forme, size,
. gplot(worldcup, aes(x = Time, y = Passes)) +
geom_point(color = "darkgreen")
## aide:
• Les differentes valeurs que peut prendre l’aes
‘shape’
• Les aesthetics constant doivent être appelés
en dehors de la clause aes()
Element Description
ggtitle Plot title
xlab, ylab x- and y-axis labels
xlim, ylim Limits of x- and y-axis
I.7 extension ggplot
10. I. Les bases de la librairie GGPLOT2
I.8 Exemples : Histogram
11. I. Les bases de la librairie GGPLOT2
I.8 Exemples : scaterplot
12. II. Customisation GGPLOT2
1. Best Practices
II.1.1. Densite des data par pixel
Une des bonnes pratiques est de garder les graphiques les
moins surcharge possibles en pixel. L’objectif étant d’avoir
le taux d’information par pixel le plus eleve possible
## aide:
Le theme retenu est ici capital:
exemple: theme_linedraw, theme_dark,
theme_void, theme_dark, theme_classic,
theme_tufte…
LOW DENSITY
HIGH DENSITY
13. II. Customisation GGPLOT2
1. Best Practices
II.1.2. La clarté des labels
S’efforcer à disposer des labels et notifications
compréhensibles
## aide:
la libraire ‘dplyr’ simplifie la manipulation des
donnees.
?fct_recode = > reondification de label
?filter
A éviter
Bonne pratique
## aide:
coord_flip permet d’inverser les axes.
## aide:
Les fonctions xlab, ylab,
scale_x_continuous, ggtitle
14. II. Customisation GGPLOT2
1. Best Practices
II.1.3. L’usage des références
L’objectif est de rajouter aux graphiques des repères ou
références ( ligne de démarcation verticales ou
horizontales, intervalle de confiance etc)
A eviter
## aide:
coord_flip permet d’inverser les axes.
## aide:
Geom_smooth, geom_hline,
geom_vline, …
A éviter
Bonne pratique
15. II. Customisation GGPLOT2
1. Best Practices
II.1.4. La mise en exergue
Il s’agit de mettre en exergue des informations
permettant une meilleure compréhension du
graphique ou que l’on juge nécessaire ( des outliers..)
## aide:
coord_flip permet d’inverser les axes.
## aide:
mutate,, …
A éviter
Bonne pratique
16. II. Customisation GGPLOT2
1. Best Practices
II.1.5. Les multiples visualisations
Il s agit de visualiser des sous-ensemble du jeu de
données, dans des plans ( repères ) juxtaposées.
## aide:
facet_grid : range les sous graph par lignes et colonnes suivant les options de la fonction
Facet_wrap: organise les sous-graphs obligatoirement en nombre de ligne et de colonne. Utile lorsqu’il y
a plusieurs modalités
A éviter
Bonne pratique
17. II. Customisation GGPLOT2
1. Best Practices
II.1.6. L’ordre
Le choix de l’ordre peut améliorer l’intelligibilité d’un
graphique
## aide:
dplyr: arrange: permet de réorganiser suivant une variable
## arrange & mutate : pour réorganiser les données
summary_wc<- summary_wc%>%
arrange(mean_time) %>% # re-order and re-set
mutate(Team = factor(Team, levels = Team))
A éviter Bonne pratique
18. II. Customisation GGPLOT2
1. Best Practices
1.4. Echelles et couleurs
Les fonctions scale_[aesthetic]_[vector] permettent de
modifier l’échelle et la gradation, la légende de
n’importe quel aesthetics, ( x,y, size, color ect).
#0
ggplot(worldcup, aes(x = Time, y = Passes, color = Position,
size = Shots)) + geom_point(alpha = 0.5) +
scale_x_continuous(name = "Time played (minutes)",
breaks = 90 * c(2, 4, 6), minor_breaks = 90 * c(1, 3, 5))+
scale_size_continuous(name = "Shots on goal", breaks = c(0,
10, 20))
Parametres de scale Description
name Label ou la légende
breaks Le vecteur des principaux ‘breaks’
minor_breaks Le vecteur des ‘breaks’ secondaires
labels Label des breaks (variable categorielle)
limits Les limites de l’axe
## Exemples:
scale_x_continuous
Sacle_y_log
scale_color_gradient (variable continue)
scale_color_brewer (usage de palette)
scale_color_manual
scale_fill_viridis
19. III. Mapping
1. Cartographie dans R
3.1.1 Créer une carte avec ggplot2
Plusieurs fonctions permettent de représenter des
cartes:
> parler de geom_path vs geom_line, geom_polygone
Parler du package de couleur viridis
us_map %>%
filter(region %in% c("north carolina"
, "south carolina")) %>%
ggplot(aes(x = long, y = lat)) +
geom_point()
us_map %>%
filter(region %in% c("north
carolina", "south carolina")) %>%
ggplot(aes(x = long, y = lat
, group=group)) +
geom_path()
us_map %>%
filter(region %in% c("north
carolina", "south carolina"))
%>%
ggplot(aes(x = long, y = lat
, group=group)) +
geom_polygon()+
theme_void()
20. III. Mapping
1. Cartographie dans R
3.1.1 Créer une carte avec ggplot2
Dans cet exemple on représente le score du parti
républicains aux elections présidentielle de 1976 dans
chaque état.
>Table_with_vote= votes.repub %>%
tbl_df() %>% mutate(state
= rownames(votes.repub),
state = tolower(state)) %>%
right_join(us_map, by = c("state" =
"region"))
>ggplot(Table_with_vote,aes(x = long, y
= lat, group = group, fill = `1976`)) +
geom_polygon(color = "black") +
theme_void() +
scale_fill_viridis(name = "Republicannvotes
(%)")
21. III. Mapping
1. Cartographie dans R
3.1.2. leaflet
Lorsqu’on ne dispose pas des donnes dans le bon
format, nous pouvons utiliser la bibliothèque leaflet.
Dans l’exemple ci-dessous on représente sur une carte
de la commune du plateau à Abidjan, des points
identifies par leur coordonnées en longitude et
latitude.
> library(leaflet)
Abidjan= data.frame(c(1,2,3,4)
, c(5.316658,
5.333894,5.320400),c(-4.032177,
-4.010441,-4.017852))
colnames(Abidjan)<-c('id',"lat","lng")
leaflet() %>%
addTiles() %>%
addMarkers(data = Abidjan[c(1,2,3),]
, lng = ~lng, lat=~lat)
22. IV. Techniques Avancées
1. Les graphiques interactifs
4.1.1 Le package Plotly
Ce package permet de créer des graphiques interactifs que
l’on peut visualiser des supports HTML.
Creation de graphique à l’aide de plot_ly
>library(plotly)
plot_ly(worldcup, type = "scatter", x = ~ Time, y = ~ Shots,
color = ~ Position)
## aide:
>Dans plot_ly, les variables sont affectées a
l’aide de x=~var
> Les asthetics constant sont renseignés à
l’aide de la fonctin I() sans le ‘~’
ex: color = I("blue")
> nepali%>%
plot_ly(x=~ht)%>%
add_histogram( color = I("lightblue"))
23. IV. Techniques Avancées
1. Les graphiques interactifs
4.1.1 Le package Plotly
## aide:
> Les tags html peuvent être utilisés
>Les fonctions add_* jouent le rôle des
geom* de ggplot : add_markers, add_lines,
add_paths, add_histograms…
> worldcup %>%
mutate(Name = rownames(worldcup)) %>%
plot_ly(x = ~ Time, y = ~ Shots, color = ~ Position)>%
add_markers(text = ~ paste("<b>Name:</b> ", Name
, "<br />", "<b>Team:</b> ", Team),
hoverinfo = "text") > nepali%>%
plot_ly(x=~ht)%>%
add_histogram( color = I("lightblue"))
24. IV. Techniques Avancées
1. Les graphiques interactifs
4.1.1 Le package Plotly
Création de graphique à l’aide de ggplotly
Il est aussi possible de changer des graphiques ggplot en
graphiques plotly en utilisant la fonction ggpoltly
>worldcup_scatter <- worldcup %>%
ggplot(aes(x = Time, y = Shots, color = Position)) +
geom_point()
ggplotly(worldcup_scatter)
25. IV. Techniques Avancées
1. R shiny
Rshiny permet de construire des interfaces web d’interaction
avec les utilisateurs. Sans se limiter aux graphiques, R shiny
permet de construire des environnements de tableaux de
bords et de graphiques interactifs.
4.1.1. Apparence
Les applications Shiny peuvent être exécutée dans une
fenêtre R studio ou dans une interface web.
## aide:
install.packages("shiny")
L’exemple ci-dessous est l’un des 11 built-in exemple du
package
library(shiny)
runExample("01_hello")
26. IV. Techniques Avancées
1. R shiny
Ui: qui definit l’interface utilisateur
Server: qui precise le fonctionnement de l’application:
l’usage des inputs, et l’obtention des outputs
L’applel de la fonction shinyapp
## aide:
Cela peut etre executer aussi directement a partir
du script app.R dans R studio, via le bouton
d’execution.
4.1.2. structure
Toute application shiny est contenue dans un seul script
nome « app.R ».
Le dossier contenant le script donne son nom à l’application.
Ce script a 3 composantes
4.1.3. Execution
Si le dossier contenant le fichier App.R s’appelle
MonApplication, l’application pourra etre executee
a l’aide de runApp :
Strucuture du script App.R
library(shiny)
ui <- fluidPage(
)
server <- function(input, output) {
…
}
shinyApp(ui = ui, server = server)
library(shiny)
runApp( "MonApplication"
27. IV. Techniques Avancées
1. R shiny
Rshiny permet de construire des interfaces web d’interaction
avec les utilisateurs. Sans se limiter aux graphiques, R shiny
permet de construire des environnements de tableaux de
bords et de graphiques interactifs.
4.1.1. Apparence
Les applications Shiny peuvent être exécutée dans une fenêtre R
studio ou dans une interface web.
L’exemple ci-dessous est l’un des 11 built-in exemple du package
## aide:
install.packages("shiny")
library(shiny)
runExample("01_hello")
## aide:
Dans install.packages("shiny")
28. IV. Techniques Avancées
1. R shiny
4.1.4. Interface
L’UI est constituée de deux éléments principaux le
a. Titlepanel
b.SidebarLayout :
> sidebarPanel fonction d’output
> mainPanel fonction d’output
## aide:
les tag HTML peuvent être utilisés pour enrichir
les textes
>img(src = "my_image.png", height = 72,
width = 72)
## aide:
les tag HTML peuvent être utilisés pour enrichir
les textes
Des images et contenus media peuvent être
intégrés à l’interface à l’aide de la commande
img().
Ces images doivent être sauvegardes dans un
dossier www sauvegarder à la racine.
29. IV. Techniques Avancées
1. R shiny
4.1.4. Interface
Il est possible de rajouter des contrôles d’input et
d’output dans l’interface.
Contrôles d’Input
Ces contrôles sont crées par les mots clés controleInput
et nécessite deux paramètres obligatoires: un nom et
un label, et d’autres paramètres en fonction du
contrôle.
numericInput("Nom"," Label", value = 1)
Les noms des contrôles ainsi crées seront utilisés
comme input dans la fonction server
30. IV. Techniques Avancées
1. R shiny
4.1.4. Interface
Contrôles Output
Ces contrôles sont crées pour renvoyer de la données
à l’utilisateur.
Ils sont crées en rajoutant dans l’UI des commandes
de types ControlOutput.
Ces contrôles prennent un seul paramètre le nom de
l’output qui sera renvoyé par la fonction server
textOutput("Nom")
31. IV. Techniques Avancées
1. R shiny
4.1.4. Server
La fonction server prend deux paramètres: Input et Output.
Les composantes de l’objet Output sont tous les noms des
contrôles Output crées dans la section UI. Ils sont définis
dans la fonction server en utilisant une fonction render*.
output$distPlot <- renderPlot (
{
x <- faithful$waiting bins <- seq(min(x), max(x), length.out =
input$bins + 1)
hist(x, breaks = bins, col = "#75AADB", border = "orange", xlab
= "Waiting time to next eruption (in mins)", main = "Histogram
of waiting times")
}
Par ailleurs les fonctions render* utilisent en paramètres
un ou plusieurs éléments de la liste Input.