diff --git a/courses/06_graphes.Rmd b/courses/06_graphes.Rmd new file mode 100644 index 0000000..d29a52f --- /dev/null +++ b/courses/06_graphes.Rmd @@ -0,0 +1,262 @@ +--- +title: "Graphes" +author: "Maxime Wack" +date: "20/11/2019" +output: + xaringan::moon_reader: + css: ['default','css/my_style.css'] + lib_dir: libs + seal: false + nature: + ratio: '4:3' + countIncrementalSlides: false + self-contained: true + beforeInit: "addons/macros.js" +--- + +```{r, include = FALSE} +library(gapminder) +library(tidyverse) +library(DT) +library(knitr) + +opts_chunk$set(message = F) + +options(DT.options = list(paging = F, + info = F, + searching = F)) + +datatable <- partial(datatable, rownames = F) +``` + +class: center, middle, title +# UE Visualisation +### 2019-2020 +## Dr. Maxime Wack +### AHU Informatique médicale +#### Hôpital Européen Georges Pompidou,
Université de Paris + +--- +class: center, middle +# Objectif +## Théorie des graphes +## Créer et manipuler des graphes +## Représenter des graphes + +--- +# Théorie des graphes + +### Étude des graphes et leurs applications +### Topologie des graphes +### Propriétés des graphes +### Développement d'algorithmes +- parcours en largeur/profondeur +- calcul de trajet (A*, Dijkstra) +- détection de sous-graphes +- inférence, effets de réseaux +- résolution de contraintes + +--- +# Graphes +.pull-left[ +## Graphes ou réseaux +*graphs* and *networks* +## Représentation de **relations** entre des **éléments** +] + +.pull-right[ +![](06_img/graphe.png) +] + +--- +# Sommets +.pull-left[ +### (ou nœuds, ou points)
*vertex (vertices)* en anglais +### Servent à représenter les **éléments** +### Peuvent posséder des **attributs** arbitraires (label, valeurs, etc.) +### Des attributs peuvent être **calculés** (degré, centralité, etc.) +] + +.pull-right[ +![](06_img/vertices.png) +] + + +--- +# Arêtes +.pull-left[ +### (ou liens, ou lignes)
*edges* en anglais +### Servent à représenter les **relations** +### Peuvent également posséder des **attributs** (label, poids, etc.) +] + +.pull-right[ +![](06_img/edges.png) +] + +--- +# Graphe dirigé + +.pull-left[ +### Graphe dont les arêtes ont une **direction** +### Arêtes **bidirectionnelles** possibles +] + +.pull-right[ +![](06_img/directed.png) +] + +--- +# Cycles + +.pull-left[ +### Groupes de sommets formant un **anneau** +### Dans un graphe dirigé, on doit pouvoir tourner +] + +.pull-right[ +![](06_img/cycle.png) +] + + +--- +# Clique + +.pull-left[ +### Ensemble de sommets **tous connectés entre eux** +] + +.pull-right[ +![](06_img/clique.png) +] + +--- +# Graphe connecté + +.pull-left[ +### Graphe dont **tous les sommets** forment une **clique** +] + +.pull-right[ +![](06_img/connected.png) +] + +--- +# Arbre + +.pull-left[ +### Graphe ne comportant **pas de cycle** +### Possède une ou plusieurs **racines** +] + +.pull-right[ +![](06_img/tree.png) +] + + +--- +# Graphe dirigé acyclique + +.pull-left[ +### Depuis le graphe dirigé précédent +### Quelles arêtes supprimer pour obtenir un DAG ? +] + +.pull-right[ +![](06_img/directed.png) +] +--- +# Graphe dirigé acyclique + +.pull-left[ +### **DAG** (Directed Acyclic Graph) +### Structure très reconnue +- Réseaux bayésiens +- Arbres généalogiques +- Systèmes de contrôle de version +- Systèmes de workflow +- Graphe de citations +] + +.pull-right[ +![](06_img/DAG.png) +] + +--- +# Représentation numérique + +.pull-left[ +![](06_img/numbered.png) +] + +.pull-right[ +## Liste de sommets + +`(1, 2, 3, 4, 5, 6, 7, 8)` + +## Liste d'arêtes + +`((2, 1), (3, 1), (4, 1),`
+` (2, 3), (4, 3), (4, 2),`
+` (2, 5), (5, 2), (5, 7),`
+` (6, 5), (6, 7), (7, 4),`
+` (7, 8))` +] + +--- +# Représentation numérique + +.pull-left[ +![](06_img/numbered.png) +] + +## Matrice d'adjacence + +```{r matrice, echo = F} +matrix(c(0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 1, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0), + nrow = 8) %>% t +``` +--- +class: center +# Visualisation +## Cytoscape +## yEd +## ggraph + +--- +# Outils externes + +## Cytoscape + +https://cytoscape.org/ + +Pour l'analyse de réseaux, orienté biologie à l'origine
+Visualisation de réseaux
+Calculs d'indicateurs
+Mapping d'attributs sur des propriété esthétiques + +## yEd + +https://www.yworks.com/products/yed + +Éditeur de graphes, multiples supportés
+Visualisation de réseaux
+Nombreux algorithmes de layout
+Calculs d'indicateurs
+Mapping d'attributs sur des propriété esthétiques
+ +--- +# ggraph + +https://ggraph.data-imaginist.com/ + +### `geom_node_*` → geom pour les sommets +### `geom_edge_*` → geom pour les arêtes +### Propriété `layout` dans `ggraph()` diff --git a/courses/06_img/DAG.png b/courses/06_img/DAG.png new file mode 100644 index 0000000..f46d916 Binary files /dev/null and b/courses/06_img/DAG.png differ diff --git a/courses/06_img/clique.png b/courses/06_img/clique.png new file mode 100644 index 0000000..98d4a03 Binary files /dev/null and b/courses/06_img/clique.png differ diff --git a/courses/06_img/connected.png b/courses/06_img/connected.png new file mode 100644 index 0000000..39239e4 Binary files /dev/null and b/courses/06_img/connected.png differ diff --git a/courses/06_img/cycle.png b/courses/06_img/cycle.png new file mode 100644 index 0000000..57ef736 Binary files /dev/null and b/courses/06_img/cycle.png differ diff --git a/courses/06_img/directed.png b/courses/06_img/directed.png new file mode 100644 index 0000000..a2411b8 Binary files /dev/null and b/courses/06_img/directed.png differ diff --git a/courses/06_img/edges.png b/courses/06_img/edges.png new file mode 100644 index 0000000..dd3fc60 Binary files /dev/null and b/courses/06_img/edges.png differ diff --git a/courses/06_img/graphe.png b/courses/06_img/graphe.png new file mode 100644 index 0000000..4d6e1e7 Binary files /dev/null and b/courses/06_img/graphe.png differ diff --git a/courses/06_img/graphes.svg b/courses/06_img/graphes.svg new file mode 100644 index 0000000..f60f095 --- /dev/null +++ b/courses/06_img/graphes.svg @@ -0,0 +1,1059 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 8 + 2 + 3 + 7 + 6 + 5 + 4 + + + + + diff --git a/courses/06_img/numbered.png b/courses/06_img/numbered.png new file mode 100644 index 0000000..5894394 Binary files /dev/null and b/courses/06_img/numbered.png differ diff --git a/courses/06_img/numbered_.png b/courses/06_img/numbered_.png new file mode 100644 index 0000000..0d9d827 Binary files /dev/null and b/courses/06_img/numbered_.png differ diff --git a/courses/06_img/tree.png b/courses/06_img/tree.png new file mode 100644 index 0000000..57f41dc Binary files /dev/null and b/courses/06_img/tree.png differ diff --git a/courses/06_img/vertices.png b/courses/06_img/vertices.png new file mode 100644 index 0000000..32ea98b Binary files /dev/null and b/courses/06_img/vertices.png differ