Accessibility Tools

- Le blog participatif de bioinformatique francophone depuis 2012 -

Customiser matplotlib (faire son matplotlibrc)

Suite à une mésa­ven­ture liée à mat­plot­lib sur le chan IRC #bioin­fo-fr (mésa­ven­ture suite aux fameuses erreurs de dis­play ; si vous vou­lez tout savoir : si on confi­gure mal son mat­plot­lib on peut géné­rer des erreurs qui font qu'on obtient des images vides… voir la par­tie sur le backend plus tard :o), j'ai par­lé de la joie qu'est d'avoir un mat­plot­li­brc et à quel point ça sim­pli­fie la vie.

Et comme ça pour­rait ser­vir à d'autres, voi­ci un petit article pour par­ler de fichiers de confi­gu­ra­tion de mat­plot­lib !

Qu'est-ce qu'un matplotlibrc ?

Il s'agit tout sim­ple­ment d'un fichier de confi­gu­ra­tion pour mat­plot­lib (comme votre

), qui per­met d'éviter de faire jou­jou avec les para­mètres dyna­mi­que­ment, de les gar­der au chaud d'un import à l'autre 😉

Vous avoue­rez que pour les his­toires de backend (la source depuis laquelle vous faites appel à mat­plot­lib, plus de détails ici) sur les ser­veurs sans ser­veur X (AKA sans inter­face gra­phique), et pour avoir un style cohé­rent d'une figure à l'autre (de sa thèse par exemple) c'est plu­tôt pra­tique !

Où est-ce que je range mon matplotlibrc ?

Alors c'est très simple, mat­plot­lib va aller cher­cher un mat­plot­li­brc à 4 endroits dif­fé­rents au moment de son char­ge­ment, et ce dans cet ordre :

  1. dans le fichier dans le dos­sier cou­rant
  2. dans
  3. dans  (ou dans  si vous n'êtes pas sous GNU/​Linux)
  4. dans  si vous êtes sous GNU/​Linux. Atten­tion, ce fichier sera écra­sé à chaque fois que vous ré-ins­tal­le­rez mat­plot­lib ! Ce n'est donc pas un endroit pérenne pour aller tri­pa­touiller votre confi­gu­ra­tion de mat­plot­lib.

Comment est-ce que je vois quel fichier de configuration est chargé ?

Il suf­fit d'exécuter dans votre shell python (ou encore mieux dans iPython3 !) les com­mandes sui­vantes :

Qu'est-ce que je mets dans mon matplotlibrc ?

Pour faire court (oui oui, il m'arrive de faire court ^_​^) : toute la confi­gu­ra­tion de mat­plot­lib que vous sou­hai­tez conser­ver d'une fois à l'autre.

Je pense notam­ment au backend que vous uti­li­sez, que ça soit chez vous, sur votre PC por­table ou sur le ser­veur de cal­cul sans ser­veur X.

Pour cela, insé­rez tout sim­ple­ment :

Et pour que le backend ait une solu­tion de repli alter­na­tif auto­ma­tique en cas de conflit :

Quelques options cools :

Et là où la magie s'opère…

Oui parce que c'est bien beau toute cette tam­bouille interne, mais je vous ai pro­mis des figures cohé­rentes tout au long de votre thèse ! :p

En fait, vous pou­vez tout défi­nir dans votre mat­plot­li­brc : de l'aspect des lignes à l'aspect des box­plots, en pas­sant par la fonte et à l'utilisation de LaTeX.

Plu­tôt que de vous faire une liste longue comme le bras de ce que vous pou­vez faire comme cus­to­mi­sa­tion, je vous pro­pose d'aller jeter un œil à ce dépôt git ! Vous y trou­ve­rez des démos pour plu­sieurs styles de mat­plot­li­brc : du R‑like, du ggplot-like… et comme nous navi­guons dans le mer­veilleux monde des fichiers de confi­gu­ra­tion, sachez qu'il en existe plein d'autres (cer­tains sont même sour­cés dans le dépôt git que j'ai cité).

Et voi­là, à votre édi­teur de texte pré­fé­ré et faites-vous un mat­plot­li­brc 😉

Je remer­cie m4rsu pour l'idée de cette article, mes chères relec­trices Clem_​, Gwe­naëlle, Estelle, et mon admin ado­ré Yoann M.

Vous avez aimé ? Dites-le nous !

Moyenne : 0 /​ 5. Nb de votes : 0

Pas encore de vote pour cet article.

Partagez cet article



Pour continuer la lecture :


Commentaires

Une réponse à “Customiser matplotlib (faire son matplotlibrc)”

  1. Petite pré­ci­sion utile : en uti­li­sant 'Agg', un 'pyplot​.show()' ne mar­che­ra plus car 'Agg' est un backend non-inter­ac­tif, il ne peut que géné­rer des fichiers.
    Effet de bord à savoir sur­tout que mat­plot­lib n'envoie aucun mes­sage d'erreur 😉

Laisser un commentaire

Pour insérer du code dans vos commentaires, utilisez les balises <code> et <\code>.