Outils pour utilisateurs

Outils du site


public:specs_afc

Analyse Factorielle des Correspondances (AFC)

Paramètres

rendu :

  • firstDimension ← préférence = 1
  • secondDimension ← préférence = 2
  • showIndividuals ← préférence = true
  • showVariables ← préférence = true
  • showPointShapes ← préférence = true

Construction

À partir :

  • d'une table lexicale
  • d'une partition, avec
    • une table lexicale

Calculs

calcul de DIST²

L&S propose “DISTO (Distance à l'Origine) contient les carrés des distances à l'origine des axes” (d'après mail BP 2015-05-06).

Volle propose “le calcul de l'inertie est une fonction du carré de la distance (DIST² x poids)” (d'après mail BP 2015-05-06).

Interface

  • présentation du calcul de DIST²

Actuellement les résultats DIST² gagneraient à être présentés de façon plus explicite.

  • Sélection / Filtrage des points affichés

Actuellement il n'y a pas de sélection ni filtrage après calcul de l'AFC

Sélection, filtrage des points

Dans TXM 0.7.5

En activant la perspective “Laboratoire”, 2 nouveaux paramètres d'AFC sont affichées dans la toolbar de l'éditeur donnant accès directement au contenu des paramètres “selectRow” et “selectCol” de FactoMineR.

Stylage des points

TXM 0.8.2 : CACompileStyle + CAStyle

Le workflow support de la conception est le suivant :

  1. stats/CAFilter
    • paramètres :
      • plan d'AFC
      • des seuils
    • remarques :
      • cette étape peut être relativisée si un calcul de style provoque un rendu de transparence pouvant faire disparaitre de fait certains points des plans
      • à lier également à l'édition de la table lexicale amont (= supprimer certains points de la table et du coup du calcul et des plans)
      • à lier également au passage en illustratif (= ne participe pas au calcul mais est affiché, dans un style propre ou non)
  2.  préparation des données utilisées par l'étape CACompileStyle
    • paramètres :
      • plan d'AFC
    • construction d'un tableau de données :
      • a) des données du plan d'AFC (noms colonnes, noms lignes, masse, dist, q12, cont1, cos21, c1, c2, etc.)
      • b) + d'autres données associées aux précédentes par jointure sur les noms de colonnes des données du plan d'AFC [j'ai surtout stylé des points colonnes]
    • remarques :
      • la jointure sert à alimenter les calculs avec des informations qui ne se trouvent pas dans la table lexicale
      • la jointure est actuellement faite en dehors de TXM (j'exporte le tableau de données du plan d'AFC par copier/coller, puis je fais la jointure avec un script)
      • il faut considérer les deux cas marginaux suivants empêchant la jointure de certaines lignes :
        • certains noms de colonnes seulement dans les données du plan d'AFC (des points n'ont pas certaines informations pour calculer leur style)
        • certains noms de colonnes seulement dans les autres données
      • gestion des jointures manquées ou d'informations manquantes
        • le code de calcul de style doit tenir compte du fait que certaines cellules du tableau d'entrée peuvent ne pas être alimentées (soit à cause d'un problème de jointure, soit parce qu'une information est manquante)
        • on peut réfléchir à un scénario interactif de résolution des problèmes (eg édition du tableau ou d'une seule colonne de ce tableau des données à associer)
        • on peut aussi vérifier en amont (par exemple à l'import) que toutes les données “de jointure” sont disponibles (pour qu'il n'y ai pas de situation de jointure impossible)
      • même si un tableau explicite est utile pour discuter du workflow, à terme le tableau de départ pour le calcul des styles peut être virtuel (eg les méthodes de stylage font appel à des données dans un tableau qui de fait est éclaté entre différentes zones de données - dont les données du plan d'AFC)
        • les partitions à l'origine des AFC sont la plupart du temps issues des structures textuelles (text, div, sp…), et ces structures textuelles peuvent naturellement porter des informations pertinentes pour le calcul de styles, ou pas. Si elles ne les portent pas, par exemple les tours de parole peuvent ne pas porter le sexe du locuteur, alors il faut faire une jointure à partir d'une donnée annexe
          • la projection systématique amont de données dans toutes les structures textuelles peut être une façon d'éviter à avoir une jointure à faire pour styler un plan d'AFC, mais ça peut être très lourd en terme de stockage (pas très efficace)
  3. stats/CACompileStyle
    • paramètres :
      • rules_script : fichier script des calculs de stylage : actuellement tous les calculs sont réalisés au sein de ce script (le paramètre functions_script n'est pas utilisé)
      • tableau d'entrée - à l'origine des calculs de stylage, produit par l'étape précédente
      • tableau de sortie - pour piloter le stylage des plans dans CAStyle
    • remarques :
      • CACompileStyle utilise la ligne suivante pour appliquer les règles de style :
        groovy.evaluate(rules_script.getText("UTF-8"))
      • ce serait bien de pouvoir continuer à régler ces calculs par Groovy
  4. stats/CAStyle
    • paramètres :
      • plan d'AFC
      • tableau de sortie de CACompileStyle

Il reste à créer un exemple de stylage pour VOEUX pour partager deux tableaux d'entrée et de sortie dans un cas concret qui utilise les possibilités de stylage testées.

TXM 0.8.1 et l'utilitaire CAStyle

L'utilitaire stats/CAStyle permet de styler les étiquettes et les formes des points-colonnes et des point-lignes à partir de patrons d'étiquettes (d'expressions régulières), l'étiquette étant unique pour chaque point-colonne et chaque point-ligne.

La macro est téléchargeable depuis les sources CAStyleMacro.groovy.

Paramètres :

  • patternODSFile : chemin du fichier .ods contenant les stylages à appliquer
  • debug : affichage de différents niveaux de messages d’exécution dans la console
    • valeurs possibles :
      • ON, ALL et REALLY ALL : 3 niveaux de messages du moins au plus détaillé
      • OFF : aucun message

Format du fichier .ods de stylage :

  • le fichier doit contenir 2 feuilles nommées “cols” et “rows”
    • “cols” contient le tableau de stylage des points colonnes
    • “rows” contient le tableau de stylage des points lignes
  • chaque tableau de stylage permet de styler à la fois la forme et l'étiquette des points
  • la première ligne d'un tableau de stylage contient les noms des colonnes :
    label-pattern label-replacement label-font-family label-style label-size label-color shape-replacement shape-size shape-color hidden
  • chaque ligne suivante définit un stylage
  • un stylage combine (a) un patron d'étiquette à (b) des codes de stylage
    • a) le patron d'étiquette (expression régulière) se trouve dans la première colonne : label-pattern
      • pour chaque point dont l’étiquette correspond au patron, les codes de stylage des colonnes suivantes sont appliqués
    • b) les codes de stylage se trouvent dans les colonnes suivantes : label-replacement, label-font-family, label-style, label-size, label-color, shape-replacement, shape-size, shape-color, hidden
      • si une cellule de colonne de stylage est vide, le style correspondant n'est pas appliqué
  • les codes de stylage prennent les valeurs suivantes :
    • colonne label-replacement
      • une chaine de caractères pour remplacer l'étiquette courante
        • [SLH, 23/07], avec reprise des parenthésages de regex ? ()..() → $1 et $2
    • label-font-family
      • un nom de famille de police existant sur la machine 1)
    • label-style
      • un code du style de police
      • les codes possibles sont : 1 = gras, 2 = italique, 3 = gras + italique, et normal = ?
    • label-size
      • un nombre décimal facteur d'agrandissement par rapport à la taille par défaut de la police, exemple :
        • 2,0 → double de la taille par défaut
        • 0,5 → moitié de la taille par défaut
        • etc.
    • label-color
      • un code de la couleur de l'étiquette et éventuellement de sa transparence
        • code couleur seule : de la forme “R G B”
        • code couleur et transparence (avec canal alpha) : de la forme “R G B A”
      • valeurs des codes R, G et B : entiers compris entre 0 et 255 codant l'intensité du canal couleur
        • R = canal rouge, G = canal vert et B = canal bleu
      • valeurs du code A : entier compris entre 0 et 255 codant l'opacité de l'étiquette (255 = opaque)
      • exemples :
        • couleur bleue : 0 0 255
        • couleur bleue à moitié transparente : 0 0 255 128
      • voir la page de spécifications des couleurs de TXM pour utiliser les couleurs de la palette de TXM et leurs codes
        • choisir la couleur, sa sombreur (shade / nuance) ou sa clareté (tint / teinte), puis copier les codes RGB
        • le site propose également jusqu'à quatre couleurs complémentaires
    • shape-replacement
      • un code de la forme du point pour remplacer la forme courante
      • les codes possibles sont : diamond, square, disk, triangle, star ?, circle ?
    • shape-size
      • un nombre décimal facteur d'agrandissement par rapport à la taille par défaut de la forme du point, exemple :
        • 2,0 → double de la taille par défaut
        • 0,5 → moitié de la taille par défaut
        • etc.
    • shape-color
      • un code de la couleur de la forme de point
      • voir les codes couleurs de la colonne de stylage 'label-color'
    • hidden :
      • la chaine t ou T (pour 'true') pour cacher l'étiquette (le rendre invisible)
      • toute autre valeur, y compris aucune, maintient l'étiquette visible

Exemples de tableaux de stylage du premier plan de l'AFC de la partition VOEUX/text@loc/@word

Ces documents .ods contiennent chacun un tableau de stylage des point-colonnes (feuille 'cols') et un tableau de stylage des point-lignes (feuille 'rows') [téléchargements depuis le Sharedocs d'Huma-Num] :

Description :

  • les styles sont construits à partir d'une copie des tableaux de données des point-colonnes et des point-lignes
  • ils s'appliquent aux étiquettes et aux formes de points des point-colonnes et des point-lignes
  • les point-colonnes et les point-lignes sont stylés de la façon suivante :
    • la taille des étiquettes est proportionnelle à la contribution à l'axe 1 (cont1) ou 2 (cont2), les tailles vont de 1 à 10 (1 est la taille de base)
    • la transparence des étiquettes est proportionnelle à l'angle par rapport à l'axe 1 (cos2-1) ou 2 (cos2-2), les transparences vont de 80 (peu visible) à 255 (opaque)
    • la taille des formes de points est proportionnelle à la masse (masse), les tailles vont de 1 à 10
    • les étiquettes de 'mitterrand' et de 'hollande' sont de couleur 'rose', les autres sont en 'bleu'
    • les point-lignes dont l'étiquette ne fait qu'un seul caractère (ponctuation) sont cachés
    • les tailles et transparences sont calculées à l'aide de formules de projection linéaire utilisant deux macros Calc LinearMin et IntLinearMin inclues dans le document .ods
      • elles prennent en entrée quatre arguments :
        • x : la valeur à projeter
        • max_input : la valeur maximale de x
        • min_output : la valeur la plus petite de la projection
        • max_output : la valeur la plus grande de la projection
      • elles font le même calcul sauf que la seconde transforme le résultat en entier
      • voici leur code :
        Function LinearMin(x, max_input, min_output, max_output)
         
        	y = x*(max_output-min_output)/max_input+min_output
         
            If y < 1 Then
                 LinearMin = min_output
            Else
                 LinearMin = y
            End If
        End Function
         
        Function IntLinearMin(x, max_input, min_output, max_output)
         
        	y = x*(max_output-min_output)/max_input+min_output
         
            If y < 1 Then
                 IntLinearMin = INT(min_output)
            Else
                 IntLinearMin = INT(y)
            End If
        End Function
  • pour les modifier dans les .ods depuis Calc :
    • lancer 'Outils > Macros > Éditer les macros'
    • dans le 'Catalogue d'objets' à gauche, double-cliquer sur 'CAStyle-sample-parameters.ods > Standard > Module1 > LinearMin'

Exemples de résultats :

Stylage des contributions à l'axe 1
Stylage des contributions à l'axe 2

TXM 0.8.0 et la macro AFCWithStyles

DOWNLOAD MACRO

Chemin :

 davs://sharedocs.huma-num.fr/dav.php/@Shares/(948)%20Cactus%20Data/(3789)%20Cactus/Projets/Textométrie/TXM/scripts-et-macros/AFCWithStylesMacro.groovy 

La macro modifie les styles d'affichage du chart JFreeChart de l'AFC.

La macro se lance avec le raccourcis F12 lorsque l'éditeur de l'AFC est ouvert. (le raccourcis F12 ne fonctionne pas si le focus est sur le graphique, il faut alors sélectionner une ligne du tableau de données)

Paramètres :

  • patternODSFile : chemin du fichier ODS contenant les stylages à appliquer
  • debug : affiche plus de détails d’exécution dans la console

Format du fichier ODS de stylage :

  • le fichier doit contenir 2 feuilles nommées “cols” et “rows”
    • “cols” contient le tableau de stylage des points colonnes
    • “rows” contient le tableau de stylage des points lignes
  • les tableaux commencent dans la 1ere cellule des feuilles
  • les colonnes des tableaux sont :
    • pattern : expression régulière de sélection des points à styler
      • les patterns sont testés dans l'ordre des lignes du tableau
      • un point peut être stylisé plusieurs fois
    • label : nouveau label du point à appliquer
      • pas de remplacement si la cellule est vide
    • hidden : active le masquage du point si contient “t” ou “T”
    • font-familly : police différente
    • font-size : taille de la police

exemple de fichier ODS :

pattern	label	hidden	font-familly	font-size
h.+		t		
p.+	REPLACED		Arial	20

Tracés

Pouvoir tracés/dessiner dans le chart de l'AFC pour faciliter la lecture, mettre en valeur certains points, etc.

Lignes

V0 - par extension

En se basant sur les annotations de type lignes de JFreeChart, pouvoir relier des points entre eux par une ou plusieurs listes de points à reliés.

Prototypes:

  • DrawRowsColsLinesInChartMacro.groovy : listes d'identifiants de points à relier
  • DrawXYLinesInChartMacro.groovy : listes de coordonnées de lignes à tracer

V1 - par intention

Piloter les macros V0, par intention : utiliser des métadonnées typées.

Paramètres :

  • tableau de stylage (avec les colonnes de métadonnées)
  • nom de la colonne codant l'ordre des lignes
  • style de ligne : flèche|ligne|etc

État de l'art

Il y a beaucoup de littérature, il y a beaucoup d'implémentations : Fortran, C/C++, Java, R, Javascript…

Aspects généraux de l'interaction graphique dont on peut s'inspirer

Interaction visualisation graphique FactoMineR

Sélection, filtrage des points

L'équipe de FactoMineR propose plusieurs voies :

  • Une interface WEB (local) à FactoMineR : “FactoShiny” (basé sur le package R shiny)qui brasse ce qu'on peut faire en options d'affichage et calcul : https://www.youtube.com/watch?v=4T9tDX4aVS4
  • Depuis FactoMineR, une sélection au lieu d'un filtrage avec le paramètre “select” de leur fonction d'affichage “plot.ca”. Par exemple :

select=“cos2 0.6” pour sélectionner les cos2 > 0.6 pour les lignes et colonnes pour différencier le comportements ont peut utiliser les paramètres “selectCol” et “selectRow”. Petite vidéo qui en parle au temps “12:13” : https://www.youtube.com/watch?v=8Iv77jnprGg

État de la plateforme

0.7.9

Actuellement l'essentiel de la fonctionnalité est délégué aux méthodes du package FactomineR qui est une implémentation open-source de référence dans la lignée des travaux d'une doctorante de J-P Benzécri.

Certains résultats sont calculés en référence à Volle et L&S.

  • c'est le cas du calcul de DIST²

Calcul de DIST²

Le calcul actuel est celui de L&S. [SJ: pour être plus précis, le calcul ne se fait que sur les 5 premiers facteurs. ex. c1^2 + c2^2 + … + c5^2]

Affichage de DIST²

Du coup son affichage doit être 'DIST²'.

1)
l'utilitaire ListFonts liste les noms de toutes les polices installées sur la machine
public/specs_afc.txt · Dernière modification : 13/02/2024 16:06 de matthieu.decorde@ens-lyon.fr