Découverte :
Contrarié par les diagrammes de Venn ? Découvrez les diagrammes UpSet

Titre incluant un moyen mnémotechnique ;D

Avec ses cercles entrecroisés, on ne présente plus le célèbre diagramme de Venn. Cette représentation est utilisée dans le cas où l'on souhaite représenter le recoupement de données de nombre fini selon plusieurs variables qualitatives. De façon plus simple lorsqu'on a 2 variables qualitatives : combien d'éléments présents dans la catégorie A sont également présents ou non dans la catégorie B

Pourquoi des diagrammes "de Venn" ?

S'il est sûr que ces diagrammes représentant des proportions et leur partage date d'avant 1918, c'est à cette date que Clarence Irving Lewis (philosophe et logicien) utilise le terme de "diagramme de Venn". Il fait en cela référence à John Venn (mathématicien et logicien) qui, en 1880, a écrit un article traitant de la généralisation des "cercles eulériens" [1] de Leonhard Euler (mathématicien et physicien). Pour cela, il modifie quelques règles :

  • Les cercles peuvent être remplacés par des courbes fermées simples (ellipses, haricots, etc.)
  • Une fois fixée, cette forme doit être la même pour toutes les catégories
  • Les zones vides doivent être hachurées
  • Les zones pleines doivent êtres symbolisées (remplissage de couleur, signe graphique, etc.)

Différence entre les différents diagrammes issus d'une généralisation progressive des cercles d'Euler | CC-BY Gwenaëlle L.

Si ces diagrammes sont très utiles lorsqu'on a peu de catégories, c'est-à-dire entre 2 et 4, il devient rapidement impossible de les utiliser au-delà selon les règles édictées par Venn. C'est pourquoi en 1989, A.W.F. Edwards supprimera notamment la règle des formes identiques pour toutes les catégories afin de pouvoir aller jusque 6 catégories sur un même diagramme dit "d’Edwards-Venn" [2]. Toutefois, par abus de langage, il est courant de désigner ces 3 types de représentation par "diagramme de Venn" (ce que je ne manquerai pas de faire par la suite).

Cependant, si on peut saluer l'effort d'adaptation, il reste un problème majeur à leur utilisation avec autant de catégories : la lisibilité. En effet, la combinaison de recoupement est telle qu'il devient humainement difficile d’appréhender la totalité de l'information en même temps (surtout quand les formes ne sont pas proportionnelles à la quantité qu'elles représentent. Cela donne lieu à ces diagrammes de Venn (plus ou moins comiques) qu'il faut absolument éviter :

À gauche, le célèbre banana Venn [3] (CC-BY-NC) et à droite, le protéome du lait [4] (CC-BY)

Si certains iront jusqu'à faire de la 3D afin de modéliser toujours plus de catégories, nous nous arrêterons pour notre part ici (vos yeux me remercieront). Mais alors, comment faire lorsqu'on est confronté à plus de 4 catégories et qu'on souhaite tout de même visualiser leur recoupement ?

L'avènement des diagrammes UpSet

En 2014, une équipe dévoile une nouvelle visualisation pour palier ce problème : les diagrammes UpSet [5]. Partant du constat d'une revue récente sur le sujet [6], cette équipe s'est lancé le défi de rendre lisible ces informations à l'aide d'une visualisation en deux parties (dans sa version la plus simple) : une matrice et un barplot.

Afin de faciliter votre compréhension des explications qui vont suivre, usons d'un exemple courant en bioinformatique : les groupes de gènes. Imaginez que vous venez par vos analyses (étude de voie métabolique, co-expression, ANOVA, etc.) d'isoler plusieurs groupes de gènes d’intérêt. Vous souhaitez à présent voir quelle part de gènes se recoupe entre vos différents groupes (clusters).

Exemple de diagramme upset basique

La matrice (ici en magenta) est chargée de représenter les intersections entre les différents sets considérés. Chaque point coloré correspond au groupe qui est pris en compte. Les lignes les traversant permettent quant à elles d'aider visuellement à la lecture (notre œil ayant la fâcheuse tendance à sauter d'une colonne à l'autre). La publication initiale nous offre même un parallèle entre la symbolique des diagrammes UpSet et des diagrammes de Venn :

Fig 6. de la publication sur les Upset.  La matrice de combinaison encodant les relations entre les différents sets, agrégations et intersections exclusives. (a) Chaque ligne correspond à une intersection exclusive qui contient les éléments des sets indiqués par des cercles noirs, mais pas les autres en plus clair. L'équivalent en diagramme de Venn est présenté sur la gauche. (b) Groupes d'aggrégation d'intersections exclusives faisant sens. Le premier aggrégat montre ses intersections exclusives, tandis que le second et le troisième sont repliés.

Le barplot sert quant à lui à rapporter graphiquement cette information de proportion partagée entre les groupes (qui manquait tant aux diagrammes de Venn). Chaque barre témoigne par sa hauteur du nombre de gènes partagés dans la combinaison de la matrice de même colonne (dans le cas des groupes seuls, il s'agit de la proportion de gènes uniques à ce groupe).

L'avantage de cette représentation, c'est qu'on peut lui rajouter un nombre important d'informations complémentaires. Ainsi il n'est pas rare de voir se rajouter un second bar plot qui indique la taille totale de chacun des sets (ici nos groupes). Mais on peut aller encore plus loin et ce sont évidemment les auteurs des diagrammes UpSet qui en font la meilleure preuve grâce à leur outil en ligne. Vous pouvez ainsi ajouter des informations d’agrégation de certains groupes (exemple : différentes conditions expérimentales) ou encore de distribution des données si celles-ci sont quantitatives.

Fig. 12 de la publication sur les Upset.  Une agrégation par degré des sets révèle que l'intersection de degré 8 (le maximum) est la plus grande intersection non vide pour les pays exportant des produits textile masculins.

Présentation du package R UpSetR

Une fois n'est pas coutume, on ne va pas vous laisser repartir sans un petit exemple de code permettant de générer ces magnifiques diagrammes. Si je vous présente aujourd'hui une implémentation en R, sachez que bien d'autres langages ont leur propre package/bibliothèque pour faire de même (python par exemple avec UpSetPlot).

Reprenons notre exemple de tout à l'heure et générons de faux gènes et de faux groupes de ceux-ci :

À partir de cette liste de groupes de gènes, on va simplement effectuer une transformation afin d'obtenir une matrice présence/absence à l'aide de reshape2 :

Et voici notre diagramme UpSet en quelques lignes de code !

Diagramme upset issu de nos faux groupes de gènes

Et sur un cas concret ?

Reprenons ce diagramme de Venn sur le protéome du lait selon le stade de lactation et transformons le en diagramme upset !

  • 1ère étape : récupérer les données. Pour cela, téléchargez le dataset n°2 à cette adresse.

Extrait du dataset n°2 sur le proteome selon le stade de lactation

  • 2ème étape : le job habituel du bioinfo, reformater correctement les données qui ont été formatées en dépit du bon sens de façon peu adaptée à un traitement ultérieur. Pour cela on va concaténer les protéines présentes par stade de lactation
  • 3ème étape : le upset diagramme tout en simplicité !

Reprise du diagramme de Venn de la figure de la répartition des protéines du lait selon le stade de lactation en diagramme upset

On retrouve bien toutes nos informations sur la répartition des protéines et celles en commun (par exemple les 105 si importantes dans la publication) mais avec en plus l'information sur les proportions.

Il est également possible de jouer très facilement sur les échelles afin d'améliorer la visualisation.

Même diagramme upset avec les deux échelles en log10

Comme on peut le voir sur le premier diagramme, on constate plus facilement la répartition des protéines et le déséquilibre présent ainsi que le taux de recoupement.

Conclusion

Les diagrammes de Venn ne sont pas à jeter lorsqu'il s'agit de faire des recoupements de 2 ou 3 catégories, mais idéalement, il faudrait associer une proportionnalité entre taille des formes et contenu.

Les diagrammes UpSet sont quant à eux vos nouveaux amis lorsqu'il s'agira de représenter vos recoupements à votre prochaine présentation/ article !

Enfin, est bon de rappeler qu'il est important de définir le message qu'on souhaite faire passer afin d'adapter la visualisation. Faire un upset pour deux catégories sera ainsi trop complexe, et un diagramme upset aussi complet que celui de la figure 12 sera trop long à analyser pour une diapositive dans une présentation.

Sachez estimer 😉

Références

Pour aller plus loin

  • EDIT 18/02 : La vignette du package, plus complète notamment sur ordonnancement des sets : https://cran.r-project.org/web/packages/UpSetR/vignettes/basic.usage.html
  • Mention honorable : le radial set qui malgré une bonne idée initiale, perd également en lisibilité rapidement. https://publik.tuwien.ac.at/files/PubDat_219617.pdf
  • D'autres méthodes de visualisation existantes regroupée en un seul endroit, SetViz : https://www.cvast.tuwien.ac.at/SetViz

Merci aux relecteurs schneu, Norore, CreatorOfMoon, et azerin pour leur temps sur cet article !

  • À propos de
  • Doctorante rousse à vocation bioinformatique / biostatistiques, je suis admin de bioinfo-fr depuis 2017, et ex-trésorière de JeBiF. Après un parcours assez inhabituel (BTS Bio, Licence Stats/Info, Master BIBS de l'U. Paris Sud/Polytechnique), je suis actuellement en doctorat au CHU de Québec/U. Laval au Canada où je travaille dans le cadre de ma thèse sur les réseaux de co-expression appliqués au vieillissement de la peau.

5 commentaires sur “Contrarié par les diagrammes de Venn ? Découvrez les diagrammes UpSet

  1. On a testé UpSet avec un très gros jeu de données, genre 35 000 x 250 et on l'a crashé :s. C'est utile mais a partir de 100 x 100 ca commence à être ingérable

    • À quoi correspondent les 35 000 et 250 ? Si on imagine qu'il s'agisse de 35 000 gènes et 250 groupes (ce que j'ai rarement vu), il est nécessaire de se demander ce qu'on cherche à obtenir en regardant le recoupement. À supposer qu'on puisse plotter un tel diagramme upset, il me paraît difficile de l'interpréter tant les variations seront nombreuses et fines.
      Il peut être intéressant de réduire la dimension du jeu de données. Peut-on regrouper les 250 en X meta-groupes (X conditions par ex) ? Ou bien sans connaître de groupe pré-défini, peut-on en regrouper certains par une PCA ?

      Si par contre les 250 s'avéraient être des individus, il ne me semble pas qu'un diagramme upset ou de venn soit pertinent comme visualisation des différences. Il faudrait alors préférer une matrice de corrélation (ou tout autre score de similarité)

  2. Honnetement je pense m'en servir dans le prochain projet du laboratoire. Merci beaucoup pour cette présentation.

  3. Woah, mais pourquoi n'en ais-je jamais entendu parler avant ?! J'aime beaucoup cette représentation, et je suis étonnée de ne pas l'avoir croisée plus souvent. Je la reprendrais si besoin est.
    Merci beaucoup pour cet article !

Laisser un commentaire