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
1 |
.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
1matplotlibrc
- dans
1$MATPLOTLIB/matplotlibrc
- dans
1.config/matplotlib/matplotlibrc1.matplotlib/matplotlibrc
- dans
1/etc/matplotlibrc
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 :
1 2 |
import matplotlib<br> 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 :
1 2 3 4 5 6 7 |
# The default backend ; one of GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo<br> # MacOSX Qt4Agg Qt5Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG<br> # Template.<br> # You can also deploy your own backend outside of matplotlib by<br> # referring to the module name (which must be in the PYTHONPATH) as<br> # 'module://my_backend'.<br> backend : Agg |
Et pour que le backend ait une solution de repli alternatif automatique en cas de conflit :
1 2 3 4 |
# if you are running pyplot inside a GUI and your backend choice<br> # conflicts, we will automatically try to find a compatible one for<br> # you if backend_fallback is True<br> backend_fallback : True |
Quelques options cools :
1 2 3 |
interactive : False<br> toolbar : toolbar2 # None | toolbar2 ("classic" is deprecated)<br> 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