Suite à une mésaventure liée à matplotlib sur le chan IRC #bioinfo-fr (mésaventure suite aux fameuses erreurs de display ; si vous voulez tout savoir : si on configure mal son matplotlib on peut générer des erreurs qui font qu'on obtient des images vides… voir la partie sur le backend plus tard :o), j'ai parlé de la joie qu'est d'avoir un matplotlibrc et à quel point ça simplifie la vie.
Et comme ça pourrait servir à d'autres, voici un petit article pour parler de fichiers de configuration de matplotlib !
Qu'est-ce qu'un matplotlibrc ?
Il s'agit tout simplement d'un fichier de configuration pour matplotlib (comme votre
bashrc), qui permet d'éviter de faire joujou avec les paramètres dynamiquement, de les garder au chaud d'un import à l'autre ;)
Vous avouerez que pour les histoires de backend (la source depuis laquelle vous faites appel à matplotlib, plus de détails ici) sur les serveurs sans serveur X (AKA sans interface graphique), et pour avoir un style cohérent d'une figure à l'autre (de sa thèse par exemple) c'est plutôt pratique !
Où est-ce que je range mon matplotlibrc ?
Alors c'est très simple, matplotlib va aller chercher un matplotlibrc à 4 endroits différents au moment de son chargement, et ce dans cet ordre :
- dans le fichier
matplotlibrc dans le dossier courant- dans
$MATPLOTLIB/matplotlibrc- dans
.config/matplotlib/matplotlibrc (ou dans.matplotlib/matplotlibrc si vous n'êtes pas sous GNU/Linux)- dans
/etc/matplotlibrc si vous êtes sous GNU/Linux. Attention, ce fichier sera écrasé à chaque fois que vous ré-installerez matplotlib ! Ce n'est donc pas un endroit pérenne pour aller tripatouiller votre configuration de matplotlib.Comment est-ce que je vois quel fichier de configuration est chargé ?
Il suffit d'exécuter dans votre shell python (ou encore mieux dans iPython3 !) les commandes suivantes :
import matplotlib
matplotlib.matplotlib_fname()
Qu'est-ce que je mets dans mon matplotlibrc ?
Pour faire court (oui oui, il m'arrive de faire court ^_^) : toute la configuration de matplotlib que vous souhaitez conserver d'une fois à l'autre.
Je pense notamment au backend que vous utilisez, que ça soit chez vous, sur votre PC portable ou sur le serveur de calcul sans serveur X.
Pour cela, insérez tout simplement :
# The default backend; one of GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo
# MacOSX Qt4Agg Qt5Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG
# Template.
# You can also deploy your own backend outside of matplotlib by
# referring to the module name (which must be in the PYTHONPATH) as
# 'module://my_backend'.
backend : AggEt pour que le backend ait une solution de repli alternatif automatique en cas de conflit :
# if you are running pyplot inside a GUI and your backend choice
# conflicts, we will automatically try to find a compatible one for
# you if backend_fallback is True
backend_fallback: TrueQuelques options cools :
interactive : False
toolbar : toolbar2 # None | toolbar2 ("classic" is deprecated)
timezone : Europe # a pytz timezone string, e.g., US/Central or Europe/Paris
Et là où la magie s'opère…
Oui parce que c'est bien beau toute cette tambouille interne, mais je vous ai promis des figures cohérentes tout au long de votre thèse ! :p
En fait, vous pouvez tout définir dans votre matplotlibrc : de l'aspect des lignes à l'aspect des boxplots, en passant par la fonte et à l'utilisation de LaTeX.
Plutôt que de vous faire une liste longue comme le bras de ce que vous pouvez faire comme customisation, je vous propose d'aller jeter un œil à ce dépôt git ! Vous y trouverez des démos pour plusieurs styles de matplotlibrc : du R-like, du ggplot-like… et comme nous naviguons dans le merveilleux monde des fichiers de configuration, sachez qu'il en existe plein d'autres (certains sont même sourcés dans le dépôt git que j'ai cité).
Et voilà, à votre éditeur de texte préféré et faites-vous un matplotlibrc ;)
Je remercie m4rsu pour l'idée de cette article, mes chères relectrices Clem_, Gwenaëlle, Estelle, et mon admin adoré Yoann M.
Laisser un commentaire