Ceci est la seconde édition du workshop créé par l’auteur pour le laboratoire d’architecture ALICE (EPFL-ENAC) dans le cadre du projet de recherche et d’enseignement POLIPHILO. Le premier workshop (2019) demeure disponible en ligne. Si vous n’avez pas assisté à la séance du 1e avril, consultez la première partie du deuxième workshop.
Dans cette seconde partie, nous allons nous servir d’une visualisation de réseau pour créer des récits.
Adaptez vos données
En tout premier lieu, il faut rassembler les données de tous les groupes dans un tableau unique (une seule feuille Excel), comportant une seule ligne d’entête des colonnes. Les entêtes des colonnes ne doivent contenir aucun caractère spécial (surtout pas d’espace, pas de ponctuation, caractères accentués etc.; les tirets bas sont permis).
geo_imageID | type | date | groupe | latitude | longitude | keyword_u1 | keyword_u2 | keyword_u3 | metatheme |
screenshot_200325_meyrinnord_01 | screenshot | 200328 | meyrinnord | 46.223426 | 6.073617 | route | distance | amertume | cycles |
screenshot_200325_meyrinnord_02 | screenshot | 200328 | meyrinnord | 46.223843 | 6.072170 | route | limite | regret | reseaux |
screenshot_200325_meyrinnord_03 | screenshot | 200328 | meyrinnord | 46.225072 | 6.074027 | vegetation | passage | plaisir | horizons |
screenshot_200325_meyrinsud_01 | screenshot | 200325 | meyrinsud | 46.219583 | 6.120939 | route | distance | compassion | reseau |
screenshot_200325_meyrinsud_02 | screenshot | 200325 | meyrinsud | 46.217770 | 6.118607 | commun | obstacle | joie | prise |
screenshot_200325_meyrinsud_03 | screenshot | 200325 | meyrinsud | 46.217247 | 6.117912 | habitat | epaisseur | amertume | réseau |
screenshot_200325_stjulien_01 | screenshot | 200325 | stjulien | 46.165226 | 6.115810 | vegetation | passage | legerte | prises |
screenshot_200325_stjulien_02 | screenshot | 200325 | stjulien | 46.164919 | 6.116327 | vegetation | passage | legerte | prises |
screenshot_200325_stjulien_03 | screenshot | 200325 | stjulien | 46.164700 | 6.116639 | vegetation | passage | legerte | horizons |
Pour transformer ces données en réseau, il est impossible de se passer d’un langage de programmation. Nous avons déjà vu comment installer R. Si ce n’est pas déjà fait, installez R et RStudio, et prenez-les en main avec le tutoriel Premiers pas avec R et Rstudio. Il n’est pas nécessaire de faire ces premiers pas jusqu’au bout; le plus important est que vous ayez R et que vous soyez capable d’exécuter un script, c’est-à-dire:
- l’importer dans RStudio,
- adapter le code pour que les chemins et noms de fichiers correspondent aux noms de vos fichiers,
- sélectionner l’ensemble du code et presser ⌘-⏎ (Ctrl-Enter sur Windows ou Linux).
Exécutez d’abord le code suivant, qui charge simplement les modules nécessaires à l’exécution du code. Pour vous simplifier la vie, il installe au besoin les modules manquants. Si vous omettez de l’exécuter, la suite ne marchera pas.
if (!require("openxlsx")) {install.packages("openxlsx"); require("openxlsx") }
if (!require("magrittr")) {install.packages("magrittr"); require("magrittr") }
if (!require("data.table")) {install.packages("data.table"); require("data.table") }
if (!require("stringr")) {install.packages("stringr"); require("stringr") }
if (!require("ggplot2")) {install.packages("ggplot2"); require("ggplot2") }
if (!require("ggrepel")) {install.packages("ggrepel"); require("ggrepel") }
if (!require("plotly")) {install.packages("plotly"); require("plotly") }
Code language: JavaScript (javascript)
Il en va de même pour tous les autres blocs de code ci-après: en omettre un rend dysfonctionnels tous les suivants.
Importation et vérification des données
Ensuite, importez vos données dans la mémoire vive de l’ordinateur (le nom du fichier dans le code étant à adapter à votre nom de fichier ) :
dataimages <- read.xlsx("data2020/200422_ATLAS_DATABASE_ParcoursTransversaux_a.xlsx") %>% as.data.table()
Code language: JavaScript (javascript)
En bref, la ligne ci-dessus stocke la première feuille de votre tableau Excel dans la variable dataimages
.
Vérifiez maintenant que vos données ne comportent pas d’erreur, en exécutant, ligne par ligne, les commandes suivantes:
unique(dataimages$keyword_u1)
unique(dataimages$keyword_u2)
unique(dataimages$keyword_u3)
unique(dataimages$metatheme)
unique(dataimages$groupe)
Code language: PHP (php)
Lorsque vous exécutez la seconde ligne de commande [ unique(dataimages$keyword_u2)
], par exemple, l’ordinateur affiche une liste de mots uniques trouvés dans la colonne keyword_u2:
[1] "amertume" "regret" "plaisir" "soulagement" "honte"
[6] "colère" "peur" "legerete" "joie" "colere"
[11] "compassion" "limite" "juxtaposition" "niveaux" "obstacle"
[16] "tromperie" NA "amertrume" "legerte" "compassion "
[21] "plaisir " "regret honte" "peur " "légerté"
Code language: JavaScript (javascript)
NA
veut dire “champ vide”: vous avez laissé une cellule vide dans votre tableau. Si vous voyez des variantes orthographiques d’un même mot, il faut revenir à votre tableau Excel, le corriger, et le réimporter, en recommençant donc au début de cette section (Importation et vérification des données).
Transformer les données en réseau
Une fois que vos données propres sont importées, vous pouvez exécuter le code suivant pour transformer vos données en réseau et entamer le véritable travail d’analyse :
dataimages[,simplename := geo_imageID]
source_target <- data.table(
source = character(),
target = character(),
relation = character(),
relationtype = character()
)
uniques <- list(
unique(dataimages$keyword_u1),
unique(dataimages$keyword_u2),
unique(dataimages$keyword_u3)
)
i<-1
j<-10
for (i in 1:3){
for (j in 1:length(uniques[[i]])){
print(paste(i, j, uniques[[i]][j]))
if (is.na(uniques[[i]][j])) {break}
if (i==1) ulinks <- dataimages[keyword_u1==uniques[[i]][j]]$simplename
if (i==2) ulinks <- dataimages[keyword_u2==uniques[[i]][j]]$simplename
if (i==3) ulinks <- dataimages[keyword_u3==uniques[[i]][j]]$simplename
if (length(ulinks) < 2) {break}
combinations <- combn(ulinks,2) %>% t
combinations <- data.table(
source = combinations[,1],
target = combinations[,2],
relation = uniques[[i]][j],
relationtype = paste0("u",i)
)
combinations <- combinations[source!=target]
source_target <- rbindlist(list(source_target,combinations))
}
}
fwrite(dataimages,"data2020/poliphilo2020_nodes.csv")
fwrite(source_target, "data2020/poliphilo2020_edges.csv")
Code language: PHP (php)
Visionnez le réseau
Dans la première partie du workshop, nous avons vu le logiciel Cytoscape. Importez les liens du réseau (poliphilo2020_edges.csv) et les attributs associés aux noeuds ( poliphilo2020_nodes.csv) dans Cytoscape, avec le bouton “Import network” pour les premiers et “Import table” pour les seconds:
En important la table des propriétés de noeuds, vérifiez que la configuration soit comme suit:
N’appliquez pas juste cette marche à suivre, réfléchissez à ce que vous faites. Que veut dire, par exemple, “key column” dans l’image ci-dessus ?
Une fois vos données importées colorez d’abord vos noeuds en fonction des groupes:
Colorez ensuite les liens en fonction du type de mot clef:
Sélectionnez la sous-partie du réseau correspondant à un métathème:
…et créez une vue de cette partie du réseau:
Demandez à Cytoscape de faire une analyse du réseau, celle ci vous permet d’aassocier notamment des mesures de centralité aux arrête et aux nœuds (edge-betweennes et node-betweennes) :
Les liens thématiques entre lieux sont-ils directionnels ?
Visualisez la centralité des nœuds:
Visualisez la centralité des liens:
Spatialisez le réseau en appliquant un layout. Choisissez Menu: Layout > Edge-weighted spring embedded > Edge betweennes
À la fin du processus, vous devriez voir quelque chose comme l’image ci-dessous. Cytoscape vous permet de manipuler les noeuds pour mieux y voir si trop de liens se croisent. Elle va vous permettre de suivre les liens thématiques entre les lieux pour forger un récit.
Créez vos récits
Par récit, on n’entend pas une “aventure de protagoniste” mais un itinéraire de pensée, une réflexion suivie permettant de mettre les lieux en lien, de manière à ce que les caractéristiques de l’un éclairent l’autre.
Phase I: vérification de l’usage des mots clefs
Dans une première phase, il s’agit de vérifier que la compréhension des mots clefs soit cohérente entre les groupes. Pour ceci, faites un récit en cinq phases (traversant cinq nœuds), à l’intérieur d’un métathème.
Chaque étape du récit doit être accompagnée:d’un texte de 4 à 10 phrases décrivant le lieu et permettant de transiter au lieu suivant par le lien thématique (mot clef partagé par les deux lieux).
Pour constituer votre récit, deux règles pour passer d’un lieu à l’autre:
- il faut qu’il aient un lien thématique (figuré par un lien du réseau)
- il faut changer de groupe à chaque passage
Phase II: récit au sein de votre territoire
Dans une seconde phase, il s’agit de faire un récit à l’intérieur d’un territoire, à l’intérieur d’un métathème. Extrayez d’abord une sous-partie d’un réseau correspondant à un seul métathème et à un seul territoire (groupe):
Constituez un récit d’un bout à l’autre du réseau, en neuf phases, avec la règle suivante:
- À chaque fois que l’on passe d’un nœud à l’autre, il faut changer de type de de mots clef (u1, u2, u3), c’est-à-dire de type de lien
- Dans la mesure du possible, commencez par un nœud peu central (betweennes faible) cheminez à travers le nœud le plus central (betweennes forte), et aboutissez dans un nœud thématiquement périphérique (betweennes faible).
Chaque étape du récit doit être accompagnée:
- d’un texte de 4 à 10 phrases décrivant le lieu et permettant de transiter au lieu suivant par le lien thématique,
- d’une photo du lieu et
- d’un extrait de carte (vue satellite, OpenStreetMap, ou un extrait de notre grande carte, à déterminer).