{"id":2748,"date":"2026-10-14T18:00:54","date_gmt":"2026-10-14T18:00:54","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-masquer-les-axes-dans-matplotlib-avec-exemples\/"},"modified":"2026-10-14T18:00:54","modified_gmt":"2026-10-14T18:00:54","slug":"comment-masquer-les-axes-dans-matplotlib-avec-exemples","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-masquer-les-axes-dans-matplotlib-avec-exemples","title":{"rendered":"Comment masquer les axes dans Matplotlib (avec exemples)"},"content":{"rendered":"<p>La visualisation des donn\u00e9es scientifiques constitue un pont \u00e9pist\u00e9mologique indispensable entre l&rsquo;abstraction des mod\u00e8les math\u00e9matiques et les capacit\u00e9s perceptives de l&rsquo;esprit humain. Au sein de l&rsquo;\u00e9cosyst\u00e8me du langage Python, la biblioth\u00e8que <a rel=\"noopener noreferrer\" href=\"https:\/\/matplotlib.org\/\">Matplotlib<\/a> s&rsquo;est impos\u00e9e depuis plus de deux d\u00e9cennies comme la r\u00e9f\u00e9rence fondamentale pour la production de figures statiques, anim\u00e9es et interactives. Con\u00e7ue \u00e0 l&rsquo;origine par John D. Hunter pour reproduire l&rsquo;environnement graphique de MATLAB dans un cadre ouvert et orient\u00e9 objet, elle repose sur une architecture modulaire sophistiqu\u00e9e. N\u00e9anmoins, l&rsquo;un des d\u00e9fis r\u00e9currents auxquels sont confront\u00e9s les chercheurs, analystes de donn\u00e9es et d\u00e9veloppeurs r\u00e9side dans la ma\u00eetrise fine du rendu des \u00e9l\u00e9ments d&rsquo;habillage graphique, et tout particuli\u00e8rement des axes de coordonn\u00e9es.<\/p>\n<p>Dans la pratique courante de l&rsquo;ing\u00e9nierie visuelle, les axes cart\u00e9siens remplissent une fonction de guidage m\u00e9trique essentielle : ils ancrent les observations dans un espace g\u00e9om\u00e9trique calibr\u00e9, fournissent des \u00e9chelles d&rsquo;amplitude et renseignent l&rsquo;exp\u00e9rimentateur sur les unit\u00e9s de mesure physiques. Pourtant, il existe de nombreuses circonstances analytiques o\u00f9 la persistance visuelle de ces axes devient redondante, distrayante, voire pr\u00e9judiciable \u00e0 la transmission du message scientifique. Qu&rsquo;il s&rsquo;agisse de restituer des matrices d&rsquo;imagerie m\u00e9dicale, des repr\u00e9sentations topographiques sous forme de cartes d&rsquo;intensit\u00e9, des diagrammes morphologiques abstraits ou des trac\u00e9s artistiques g\u00e9n\u00e9ratifs, la suppression d\u00e9lib\u00e9r\u00e9e de tout ou partie des axes constitue un imp\u00e9ratif m\u00e9thodologique de premier ordre.<\/p>\n<p>Le pr\u00e9sent article propose une analyse exhaustive et rigoureuse des m\u00e9canismes permettant de dissimuler les axes dans Matplotlib. Au-del\u00e0 des recettes syntaxiques \u00e9l\u00e9mentaires, nous explorerons les implications architecturales de l&rsquo;objet <em>Axes<\/em>, le comportement des sous-composants tels que les \u00e9pines (<em>spines<\/em>) et les graduations (<em>ticks<\/em>), ainsi que les fondements s\u00e9miologiques justifiant l&rsquo;\u00e9puration graphique. En confrontant l&rsquo;approche imp\u00e9rative globale \u00e0 l&rsquo;approche orient\u00e9e objet, ce guide doctoral a pour vocation de vous doter d&rsquo;une ma\u00eetrise technique absolue pour concevoir des figures d&rsquo;une lisibilit\u00e9 irr\u00e9prochable, conformes aux exigences \u00e9ditoriales des revues internationales les plus rigoureuses.<\/p>\n<h2>1. Introduction \u00e0 la gestion des axes dans la visualisation avec Matplotlib<\/h2>\n<p>L&rsquo;acte graphique ne consiste pas simplement \u00e0 tracer des primitives g\u00e9om\u00e9triques sur un canevas num\u00e9rique ; il s&rsquo;agit avant tout d&rsquo;un processus de filtrage et d&rsquo;ordonnancement de l&rsquo;information visuelle. La gestion des rep\u00e8res spatiaux conditionne directement la mani\u00e8re dont l&rsquo;observateur d\u00e9code les relations structurelles au sein d&rsquo;une distribution de points ou d&rsquo;une onde continue. Avant de manipuler les structures logicielles sous-jacentes, il convient d&rsquo;examiner les fondements cognitifs qui motivent la disparition des axes ainsi que la taxonomie interne de Matplotlib.<\/p>\n<h3>1.1 Importance de la lisibilit\u00e9 graphique et charge cognitive<\/h3>\n<p>L&rsquo;analyse de l&rsquo;impact du bruit visuel sur la perception des donn\u00e9es constitue un champ de recherche central en ergonomie cognitive et en s\u00e9miologie graphique. Lorsque le regard d&rsquo;un scientifique se pose sur une figure complexe, le syst\u00e8me visuel active des m\u00e9canismes d&rsquo;attention s\u00e9lective qui consomment des ressources mn\u00e9siques limit\u00e9es au sein de la m\u00e9moire de travail. La pr\u00e9sence de graduations trop denses, de lignes de rep\u00e8re surnum\u00e9raires ou de bordures \u00e9paisses engendre ce que John Sweller a th\u00e9oris\u00e9 sous le concept de charge cognitive extrins\u00e8que, c&rsquo;est-\u00e0-dire un effort mental impos\u00e9 par la forme de la repr\u00e9sentation plut\u00f4t que par la nature intrins\u00e8que des donn\u00e9es \u00e9tudi\u00e9es.<\/p>\n<p>Ces constats trouvent un \u00e9cho fondateur dans les principes d&rsquo;\u00e9puration graphique \u00e9nonc\u00e9s par le statisticien et th\u00e9oricien <a rel=\"noopener noreferrer\" href=\"https:\/\/www.edwardtufte.com\/\">Edward Tufte<\/a>. \u00c0 travers son concept cardinal de ratio donn\u00e9es-encre (<em>data-ink ratio<\/em>), Tufte pr\u00e9conise que la quasi-totalit\u00e9 des \u00e9l\u00e9ments graphiques imprim\u00e9s ou affich\u00e9s doive \u00eatre consacr\u00e9e \u00e0 la transmission directe d&rsquo;informations chiffr\u00e9es non redondantes. Tout pixel ou toute goutte d&rsquo;encre qui ne sert pas \u00e0 r\u00e9v\u00e9ler une variation de la variable observ\u00e9e est qualifi\u00e9 de <em>chartjunk<\/em> (fatras graphique). D\u00e8s lors, masquer un axe qui ne communique aucune information fonctionnelle devient une d\u00e9marche vertueuse, align\u00e9e avec une esth\u00e9tique de la sobri\u00e9t\u00e9 scientifique.<\/p>\n<p>Il existe une multitude de contextes scientifiques justifiant l&rsquo;\u00e9limination partielle ou totale des axes de r\u00e9f\u00e9rence. En neurosciences cognitives, par exemple, lors de la pr\u00e9sentation d&rsquo;ondes c\u00e9r\u00e9brales moyennes enregistr\u00e9es par \u00e9lectroenc\u00e9phalographie (EEG), la forme du potentiel \u00e9voqu\u00e9 prime souvent sur les coordonn\u00e9es absolues de temps ou de microvolts, lesquelles peuvent \u00eatre mentionn\u00e9es textuellement ou r\u00e9sum\u00e9es par une simple barre d&rsquo;\u00e9chelle calibr\u00e9e. De m\u00eame, en traitement du signal audio ou en m\u00e9canique des fluides, l&rsquo;affichage de descripteurs morphologiques d&rsquo;ondes stationnaires ne requiert pas l&rsquo;encombrement permanent de graduations cart\u00e9siennes qui alourdissent la mise en page.<\/p>\n<p>Il convient n\u00e9anmoins de trouver un \u00e9quilibre d\u00e9licat entre la pr\u00e9cision m\u00e9trique requise pour la r\u00e9plicabilit\u00e9 exp\u00e9rimentale et l&rsquo;esth\u00e9tique fonctionnelle n\u00e9cessaire \u00e0 la clart\u00e9 p\u00e9dagogique. Supprimer inconsid\u00e9r\u00e9ment des axes sur une courbe dose-r\u00e9ponse en pharmacologie constituerait une faute m\u00e9thodologique majeure en masquant la concentration minimale efficace. En revanche, dans une planche multi-panneaux comparant vingt architectures de r\u00e9seaux neuronaux sur une m\u00e9trique normalis\u00e9e, la conservation des axes sur chaque sous-graphique g\u00e9n\u00e8re une saturation visuelle d\u00e9l\u00e9t\u00e8re. Le concepteur doit ainsi \u00e9valuer en permanence la balance b\u00e9n\u00e9fice-risque informationnelle avant d&rsquo;ordonner la dissimulation d&rsquo;un rep\u00e8re.<\/p>\n<h3>1.2 Architecture fondamentale de la biblioth\u00e8que Matplotlib<\/h3>\n<p>Pour intervenir efficacement sur la visibilit\u00e9 des \u00e9l\u00e9ments graphiques, il est imp\u00e9ratif de comprendre l&rsquo;architecture hi\u00e9rarchique sous forme d&rsquo;arborescence d&rsquo;objets (<em>Artist hierarchy<\/em>) sur laquelle repose Matplotlib. Au sommet de cette pyramide organisationnelle tr\u00f4ne la classe <strong>Figure<\/strong>, qui mat\u00e9rialise l&rsquo;espace physique ou virtuel de l&rsquo;affichage (la fen\u00eatre interactive, la zone d&rsquo;une page imprim\u00e9e ou le fichier matriciel de sortie). La figure h\u00e9berge un ou plusieurs objets de type <strong>Axes<\/strong>, qui constituent le v\u00e9ritable c\u0153ur op\u00e9rationnel du trac\u00e9 cart\u00e9sien. C&rsquo;est \u00e0 l&rsquo;int\u00e9rieur de l&rsquo;objet <em>Axes<\/em> que s&rsquo;op\u00e8re le rendu des donn\u00e9es g\u00e9om\u00e9triques : courbes, nuages de points, polygones, surfaces ou images matricielles.<\/p>\n<p>L&rsquo;objet <em>Axes<\/em> encapsule \u00e0 son tour deux instances sp\u00e9cialis\u00e9es de la classe <strong>Axis<\/strong> : l&rsquo;axe horizontal (<em>xaxis<\/em>) et l&rsquo;axe vertical (<em>yaxis<\/em>). Chaque objet <em>Axis<\/em> a la charge exclusive de g\u00e9rer les composantes g\u00e9om\u00e9triques et typographiques de sa dimension respective : les marques de graduation majeures et mineures (<em>ticks<\/em>), les \u00e9tiquettes textuelles chiffr\u00e9es associ\u00e9es (<em>ticklabels<\/em>), les \u00e9tiquettes s\u00e9mantiques d\u00e9crivant la grandeur physique (<em>axis labels<\/em>) ainsi que les lignes de rappel de grille (<em>grid lines<\/em>). Parall\u00e8lement, le cadre d\u00e9limitant la zone de tra\u00e7age est pris en charge par un dictionnaire d&rsquo;objets appel\u00e9s <strong>Spines<\/strong> (\u00e9pines), qui repr\u00e9sentent les quatre segments d\u00e9limitant le rectangle g\u00e9om\u00e9trique.<\/p>\n<p>Une distinction fondamentale doit \u00eatre op\u00e9r\u00e9e entre le masquage s\u00e9mantique d&rsquo;un composant et sa suppression mat\u00e9rielle de l&rsquo;arbre m\u00e9moire. Dans Matplotlib, lorsqu&rsquo;un \u00e9l\u00e9ment graphique d\u00e9riv\u00e9 de la classe g\u00e9n\u00e9rique <em>Artist<\/em> voit sa visibilit\u00e9 d\u00e9sactiv\u00e9e, l&rsquo;objet correspondant n&rsquo;est absolument pas d\u00e9truit ni purg\u00e9 de la m\u00e9moire d&rsquo;ex\u00e9cution. Il demeure pleinement instanci\u00e9 dans le mod\u00e8le d&rsquo;objets documentaires du graphique, continuant d&rsquo;ex\u00e9cuter ses routines de calcul sans pour autant solliciter les primitives d&rsquo;instruction du moteur de rendu (<em>Renderer<\/em>). Cette s\u00e9paration conceptuelle garantit une flexibilit\u00e9 absolue lors des manipulations interactives ou programmatiques.<\/p>\n<p>Par cons\u00e9quent, la persistance des dimensions, de l&rsquo;espace vectoriel et de l&rsquo;\u00e9chelle des donn\u00e9es sous-jacentes est scrupuleusement pr\u00e9serv\u00e9e. M\u00eame lorsque l&rsquo;abscisse et l&rsquo;ordonn\u00e9e sont rendues invisibles, les transformations de coordonn\u00e9es math\u00e9matiques appliqu\u00e9es aux donn\u00e9es brutes continuent d&rsquo;op\u00e9rer avec la m\u00eame rigueur g\u00e9om\u00e9trique. Un point positionn\u00e9 aux coordonn\u00e9es r\u00e9elles (x=12.5, y=104.2) se projettera exactement au m\u00eame emplacement physique en pixels au sein de la fen\u00eatre de tra\u00e7age, que les axes soient affich\u00e9s avec des dorures typographiques ou totalement dissimul\u00e9s aux yeux de l&rsquo;exp\u00e9rimentateur.<\/p>\n<h3>1.3 Vue d&rsquo;ensemble des techniques de masquage<\/h3>\n<p>Face \u00e0 la vari\u00e9t\u00e9 des situations d&rsquo;affichage, Matplotlib propose plusieurs paradigmes pour occulter les axes, chacun r\u00e9pondant \u00e0 des contraintes architecturales et esth\u00e9tiques sp\u00e9cifiques. La premi\u00e8re approche, hautement granulaire et conforme aux canons de la programmation orient\u00e9e objet, consiste \u00e0 solliciter les m\u00e9thodes d&rsquo;acc\u00e8s d\u00e9di\u00e9es <strong>ax.get_xaxis()<\/strong> et <strong>ax.get_yaxis()<\/strong>. Ces accesseurs permettent de r\u00e9cup\u00e9rer directement l&rsquo;instance de l&rsquo;objet <em>Axis<\/em> concern\u00e9 afin d&rsquo;invoquer sa m\u00e9thode interne de modification de visibilit\u00e9. Cette voie offre un contr\u00f4le chirurgical, autorisant par exemple la conservation de l&rsquo;axe vertical tout en neutralisant l&rsquo;axe horizontal.<\/p>\n<p>La deuxi\u00e8me modalit\u00e9, plus radicale et d&rsquo;une concision syntaxique appr\u00e9ci\u00e9e lors des sessions d&rsquo;exploration interactive, repose sur l&rsquo;appel direct \u00e0 l&rsquo;instruction globale <strong>plt.axis(&lsquo;off&rsquo;)<\/strong> ou \u00e0 son \u00e9quivalent d&rsquo;instance <strong>ax.set_axis_off()<\/strong>. En une seule instruction atomique, cette commande d\u00e9sactive l&rsquo;int\u00e9gralit\u00e9 du rep\u00e8re : elle rend invisibles les deux axes de donn\u00e9es, l&rsquo;ensemble des graduations, les libell\u00e9s alphanum\u00e9riques ainsi que les quatre bordures p\u00e9riph\u00e9riques d\u00e9limitant l&rsquo;espace graphique. Le trac\u00e9 se retrouve alors imm\u00e9diatement suspendu dans un espace blanc \u00e9pur\u00e9 de tout artefact de d\u00e9limitation.<\/p>\n<p>Une troisi\u00e8me approche, r\u00e9solument modulaire, privil\u00e9gie le contr\u00f4le ind\u00e9pendant des \u00e9pines (<em>spines<\/em>) et des graduations (<em>ticks<\/em>). Dans ce sch\u00e9ma de conception avanc\u00e9e, l&rsquo;axe conceptuel n&rsquo;est pas masqu\u00e9 dans son enti\u00e8ret\u00e9 ; le d\u00e9veloppeur proc\u00e8de plut\u00f4t \u00e0 une ablation s\u00e9lective de certaines composantes visuelles. Il est ainsi possible d&rsquo;annihiler les quatre segments de contour tout en pr\u00e9servant des graduations flottantes, ou inversement de conserver un cadre rectangulaire strict tout en supprimant l&rsquo;int\u00e9gralit\u00e9 des nombres et tirets de graduation via des m\u00e9thodes d\u00e9di\u00e9es comme <strong>ax.tick_params()<\/strong> ou l&rsquo;affectation de collections vides.<\/p>\n<p>Le choix judicieux de l&rsquo;une de ces m\u00e9thodes d\u00e9pend \u00e9troitement du cahier des charges de la visualisation scientifique. Pour un poster de conf\u00e9rence ou une planche d&rsquo;atlas anatomique n\u00e9cessitant une insertion d&rsquo;images radiographiques, la neutralisation globale via <em>axis(&lsquo;off&rsquo;)<\/em> s&rsquo;av\u00e8re optimale en \u00e9liminant d&#8217;embl\u00e9e toute marge superflue. \u00c0 l&rsquo;inverse, dans le cadre d&rsquo;un article de physique th\u00e9orique pr\u00e9sentant des trajectoires d&rsquo;oscillateurs harmoniques dans l&rsquo;espace des phases, l&#8217;emploi de m\u00e9thodes granulaires permet de conserver un cadre d&rsquo;encadrement propre tout en purgeant les axes de valeurs chiffr\u00e9es distrayantes, pr\u00e9servant ainsi la puret\u00e9 des courbes de niveau.<\/p>\n<h2>2. Fondements syntaxiques de l&rsquo;objet Axes et manipulation de la visibilit\u00e9<\/h2>\n<p>Pour manipuler les propri\u00e9t\u00e9s graphiques avec \u00e9l\u00e9gance et robustesse, il est n\u00e9cessaire de s&rsquo;\u00e9manciper des routines simplistes de l&rsquo;interface proc\u00e9durale afin d&rsquo;adopter une d\u00e9marche structur\u00e9e fond\u00e9e sur l&rsquo;interface orient\u00e9e objet de Matplotlib. Comprendre la mani\u00e8re dont les instances d&rsquo;axes sont g\u00e9n\u00e9r\u00e9es, r\u00e9f\u00e9renc\u00e9es et ordonnanc\u00e9es permet d&rsquo;\u00e9viter les effets de bord fr\u00e9quents lors de la g\u00e9n\u00e9ration automatis\u00e9e de graphiques complexes au sein de cha\u00eenes de traitement de donn\u00e9es massives.<\/p>\n<h3>2.1 Obtention de l&rsquo;axe courant via plt.gca()<\/h3>\n<p>L&rsquo;interface proc\u00e9durale standard de Matplotlib, encapsul\u00e9e dans le sous-module <strong>pyplot<\/strong>, maintient en permanence un \u00e9tat interne global qui traque la figure active et l&rsquo;axe sur lequel les instructions de tra\u00e7age doivent s&rsquo;appliquer. Dans cet environnement de type machine \u00e0 \u00e9tats, la fonction <strong>plt.gca()<\/strong> \u2014 acronyme transparent de <em>Get Current Axes<\/em> \u2014 joue un r\u00f4le d&rsquo;intercesseur fondamental. Lorsqu&rsquo;elle est appel\u00e9e sans argument, elle interroge le gestionnaire de figures actif pour retourner la r\u00e9f\u00e9rence explicite de l&rsquo;objet <em>Axes<\/em> en cours d&rsquo;utilisation. Si aucun axe n&rsquo;existe pr\u00e9alablement, la fonction proc\u00e8de silencieusement \u00e0 son instanciation automatique.<\/p>\n<p>Cependant, l&rsquo;utilisation aveugle de l&rsquo;\u00e9tat implicite induit par <em>pyplot<\/em> comporte des risques architecturaux majeurs, en particulier lors du d\u00e9veloppement de scripts de traitement par lots ou d&rsquo;applications modulaires multithread\u00e9es. Dans un script s\u00e9quentiel complexe comportant plusieurs figures ouvertes simultan\u00e9ment, l&rsquo;appel \u00e0 une fonction proc\u00e9durale peut par inadvertance alt\u00e9rer l&rsquo;axe d&rsquo;une figure secondaire si l&rsquo;utilisateur a omis de r\u00e9assigner explicitement le contexte actif. Cette fragilit\u00e9 logicielle se traduit fr\u00e9quemment par la dissimulation involontaire d&rsquo;axes sur des panneaux graphiques non cibl\u00e9s, g\u00e9n\u00e9rant des incoh\u00e9rences difficiles \u00e0 d\u00e9boguer.<\/p>\n<p>Pour pallier ces \u00e9cueils, les bonnes pratiques de g\u00e9nie logiciel en Python pr\u00e9conisent d&rsquo;abandonner l&rsquo;usage de <em>plt.gca()<\/em> au profit de m\u00e9thodes d&rsquo;instanciation explicites issues de l&rsquo;approche orient\u00e9e objet. L&#8217;emploi de la fonction modulaire <strong>plt.subplots()<\/strong> ou l&rsquo;appel direct \u00e0 la m\u00e9thode <strong>fig.add_subplot()<\/strong> permet d&rsquo;affecter imm\u00e9diatement l&rsquo;instance d&rsquo;axe cr\u00e9\u00e9e \u00e0 une variable d\u00e9di\u00e9e (traditionnellement nomm\u00e9e <em>ax<\/em>). En manipulant exclusivement cette r\u00e9f\u00e9rence locale, le d\u00e9veloppeur s&rsquo;assure d&rsquo;une isolation herm\u00e9tique de ses instructions de modification esth\u00e9tique, garantissant la reproductibilit\u00e9 absolue des op\u00e9rations graphiques.<\/p>\n<p>Cette distinction m\u00e9thodologique est illustr\u00e9e par la comparaison formelle entre la formulation proc\u00e9durale historique et la syntaxe orient\u00e9e objet contemporaine. Dans le paradigme imp\u00e9ratif, on observerait la succession s\u00e9quentielle d&rsquo;un trac\u00e9 suivi d&rsquo;un appel \u00e0 <em>plt.gca().get_xaxis().set_visible(False)<\/em>. Dans le paradigme objet recommand\u00e9 par la fondation NumFOCUS, la figure et son axe sont initialis\u00e9s conjointement, permettant d&rsquo;ex\u00e9cuter directement la m\u00e9thode sur l&rsquo;identifiant <em>ax<\/em>. Cette d\u00e9marche garantit un ciblage sans ambigu\u00eft\u00e9 sur l&rsquo;instance d&rsquo;axe ad\u00e9quate, ind\u00e9pendamment de la complexit\u00e9 globale du canevas d&rsquo;ex\u00e9cution.<\/p>\n<h3>2.2 La m\u00e9thode set_visible() et son cycle de vie<\/h3>\n<p>Au c\u0153ur du mod\u00e8le objet de Matplotlib se trouve la classe abstraite fondamentale <strong>Artist<\/strong>, dont d\u00e9rivent presque tous les \u00e9l\u00e9ments visuels composant une sc\u00e8ne graphique, depuis les lignes g\u00e9om\u00e9triques et les polygones de remplissage jusqu&rsquo;aux \u00e9tiquettes textuelles et aux axes eux-m\u00eames. L&rsquo;une des m\u00e9thodes les plus fondamentales h\u00e9rit\u00e9es de cette classe g\u00e9n\u00e9rique est la m\u00e9thode <strong>set_visible()<\/strong>. Cette m\u00e9thode accepte un unique argument formel de type bool\u00e9en, dont l&rsquo;\u00e9tat bascule de mani\u00e8re binaire l&rsquo;autorisation de restitution du composant lors de la phase finale de pixellisation ou de vectorisation.<\/p>\n<p>Lorsqu&rsquo;un d\u00e9veloppeur ex\u00e9cute l&rsquo;instruction en transmettant la valeur logique <em>False<\/em> \u00e0 une instance d\u00e9riv\u00e9e d&rsquo;<em>Artist<\/em>, un commutateur interne d&rsquo;\u00e9tat est positionn\u00e9 \u00e0 z\u00e9ro. Ce changement d&rsquo;\u00e9tat produit une cascade d&rsquo;effets sur les enfants de l&rsquo;objet concern\u00e9. Dans le cas sp\u00e9cifique o\u00f9 la m\u00e9thode est invoqu\u00e9e sur un objet <strong>Axis<\/strong> (qu&rsquo;il s&rsquo;agisse de l&rsquo;axe horizontal ou vertical), la neutralisation de la visibilit\u00e9 se propage imm\u00e9diatement vers l&rsquo;ensemble des d\u00e9pendances hi\u00e9rarchiques qu&rsquo;il administre : les lignes directrices, les graduations majeures et mineures, les libell\u00e9s de valeurs textuels ainsi que le titre assign\u00e9 \u00e0 l&rsquo;axe disparaissent simultan\u00e9ment du calcul de trac\u00e9.<\/p>\n<p>Il est fondamental de noter que l&rsquo;occultation visuelle d\u00e9clench\u00e9e par <em>set_visible(False)<\/em> n&rsquo;interrompt en rien le cycle de vie calculatoire de la g\u00e9om\u00e9trie sous-jacente. L&rsquo;objet <em>Axis<\/em> continue d&rsquo;ex\u00e9cuter l&rsquo;\u00e9valuation des limites g\u00e9om\u00e9triques via les m\u00e9canismes de d\u00e9limitation (<em>xlim<\/em> et <em>ylim<\/em>), d&rsquo;ajuster les transformateurs de projections projectives et de maintenir \u00e0 jour les relations m\u00e9triques avec l&rsquo;espace de la figure. Les collections de donn\u00e9es associ\u00e9es ne subissent aucune d\u00e9formation ni recentrage forc\u00e9, garantissant que la distribution spatiale des informations demeure strictement identique \u00e0 celle d&rsquo;une figure affichant ses axes conventionnels.<\/p>\n<p>Le comportement de <em>set_visible()<\/em> pr\u00e9sente une r\u00e9gularit\u00e9 exemplaire \u00e0 travers les diff\u00e9rents moteurs de rendu graphique (<em>backends<\/em>) int\u00e9gr\u00e9s \u00e0 Matplotlib, qu&rsquo;il s&rsquo;agisse de backends matriciels interactifs comme <em>Agg<\/em>, <em>Qt5Agg<\/em> ou de backends vectoriels destin\u00e9s \u00e0 l&rsquo;\u00e9dition typographique comme <em>PDF<\/em>, <em>SVG<\/em> ou <em>PostScript<\/em>. Lors de l&rsquo;ex\u00e9cution de la passe de dessin (<em>draw cycle<\/em>), le moteur inspecte la valeur retourn\u00e9e par <em>get_visible()<\/em> pour chaque n\u0153ud de l&rsquo;arbre graphique. Si la valeur est fausse, le n\u0153ud est purement et simplement contourn\u00e9 lors de l&rsquo;\u00e9mission des instructions graphiques vers la couche bas niveau, garantissant l&rsquo;absence totale de r\u00e9sidus vectoriels fant\u00f4mes dans le fichier final.<\/p>\n<h2>3. Masquer l&rsquo;axe des abscisses (axe X) : M\u00e9thode d\u00e9taill\u00e9e et cas pratiques<\/h2>\n<p>L&rsquo;axe horizontal, traditionnellement d\u00e9volu \u00e0 la variable ind\u00e9pendante, au temps ou aux dimensions spatiales longitudinales, concentre une quantit\u00e9 importante d&rsquo;informations de rep\u00e9rage. Toutefois, dans de nombreuses configurations d&rsquo;analyse exploratoire ou de mod\u00e9lisation s\u00e9quentielle, l&rsquo;affichage continu de ces marqueurs perturbe la perception des patterns verticaux ou s&rsquo;av\u00e8re totalement inutile en raison de la nature implicite de l&rsquo;abscisse. Nous allons d\u00e9cortiquer la m\u00e9thode canonique permettant d&rsquo;occulter pr\u00e9cis\u00e9ment ce composant.<\/p>\n<figure class=\"wpt-preserved-image\"><img fetchpriority=\"high\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/hide0.png\" alt=\"Hide x-axis in Matplotlib\" \/><figcaption>Hide x-axis in Matplotlib<\/figcaption><\/figure>\n<h3>3.1 Impl\u00e9mentation technique avec ax.get_xaxis().set_visible(False)<\/h3>\n<p>La neutralisation propre et granulaire de l&rsquo;axe horizontal repose sur une cha\u00eene d&rsquo;appels rigoureusement articul\u00e9e au sein du paradigme orient\u00e9 objet. En premier lieu, il s&rsquo;agit d&rsquo;invoquer l&rsquo;accesseur <strong>ax.get_xaxis()<\/strong> sur l&rsquo;objet d&rsquo;axe cibl\u00e9. Cette m\u00e9thode remonte la structure interne de Matplotlib pour restituer l&rsquo;instance singleton de la classe <em>matplotlib.axis.XAxis<\/em> qui est attach\u00e9e au plan de dessin. Une fois cette r\u00e9f\u00e9rence r\u00e9cup\u00e9r\u00e9e, on lui adjoint imm\u00e9diatement la commande de visibilit\u00e9 param\u00e9tr\u00e9e avec la valeur bool\u00e9enne d&rsquo;inhibition : <strong>ax.get_xaxis().set_visible(False)<\/strong>.<\/p>\n<p>Cette formulation syntaxique d\u00e9ploie une port\u00e9e strictement d\u00e9limit\u00e9e au domaine horizontal du rep\u00e8re cart\u00e9sien. Contrairement \u00e0 des commandes plus destructrices, elle laisse l&rsquo;axe vertical (<em>yaxis<\/em>) dans son \u00e9tat de configuration initial, pr\u00e9servant l&rsquo;int\u00e9gralit\u00e9 de ses graduations, de son \u00e9chelle m\u00e9trique et de son \u00e9tiquette th\u00e9matique. De surcro\u00eet, elle maintient l&rsquo;alignement g\u00e9om\u00e9trique strict de la zone de tra\u00e7age, \u00e9vitant tout glissement spatial asym\u00e9trique qui pourrait survenir lors de la manipulation directe des marges de la figure.<\/p>\n<p>La cons\u00e9quence imm\u00e9diate de cette ligne d&rsquo;instruction r\u00e9side dans la disparition synchronis\u00e9e de tous les artefacts visuels g\u00e9r\u00e9s par le gestionnaire <em>XAxis<\/em>. Les segments mat\u00e9rialisant les graduations inf\u00e9rieures et sup\u00e9rieures s&rsquo;\u00e9vanouissent, les cha\u00eenes de caract\u00e8res chiffrant les coordonn\u00e9es le long de la fronti\u00e8re inf\u00e9rieure sont supprim\u00e9es du canevas, et le label g\u00e9n\u00e9ral d&rsquo;abscisse pr\u00e9alablement configur\u00e9 n&rsquo;est plus rendu. Il est important de souligner que cette disparition s&rsquo;op\u00e8re sans aucune perturbation de la distribution des donn\u00e9es : la r\u00e9partition g\u00e9om\u00e9trique des primitives graphiques le long de la dimension horizontale demeure parfaitement int\u00e8gre et calibr\u00e9e.<\/p>\n<p>Pour v\u00e9rifier cette int\u00e9grit\u00e9, il est possible d&rsquo;interroger les propri\u00e9t\u00e9s de d\u00e9limitation de l&rsquo;axe apr\u00e8s l&rsquo;application de la commande de masquage. L&rsquo;invocation d&rsquo;instructions de diagnostic telles que <em>ax.get_xlim()<\/em> confirmera que l&rsquo;intervalle num\u00e9rique embrass\u00e9 par l&rsquo;abscisse demeure actif, fid\u00e8le aux extrema des s\u00e9ries de donn\u00e9es projet\u00e9es ou aux bornes manuelles fix\u00e9es par l&rsquo;analyste. Le mod\u00e8le math\u00e9matique de transformation des coordonn\u00e9es locales en coordonn\u00e9es de p\u00e9riph\u00e9rique reste op\u00e9rationnel en arri\u00e8re-plan, assurant une fid\u00e9lit\u00e9 g\u00e9om\u00e9trique irr\u00e9prochable.<\/p>\n<h3>3.2 Exemple pratique : Nuage de points sans abscisse<\/h3>\n<p>Pour mat\u00e9rialiser cette technique dans un cas d&rsquo;\u00e9tude concret, consid\u00e9rons la g\u00e9n\u00e9ration d&rsquo;un diagramme de dispersion o\u00f9 la dimension horizontale est utilis\u00e9e pour distribuer des observations selon un ordre indiciel sans signification physique propre, tandis que la dimension ordonn\u00e9e capture une mesure exp\u00e9rimentale continue hautement critique. On initialise un jeu de donn\u00e9es standardis\u00e9 comportant cent observations issues d&rsquo;une variable al\u00e9atoire gaussienne centr\u00e9e et r\u00e9duite. L&rsquo;abscisse est quant \u00e0 elle constitu\u00e9e d&rsquo;une suite s\u00e9quentielle discr\u00e8te d&rsquo;entiers r\u00e9guliers.<\/p>\n<p>Dans un script de d\u00e9monstration, la cr\u00e9ation de la figure et de son axe est r\u00e9alis\u00e9e via l&rsquo;instruction standard <em>fig, ax = plt.subplots(figsize=(8, 5))<\/em>. Le trac\u00e9 des donn\u00e9es est ensuite ex\u00e9cut\u00e9 par l&rsquo;interm\u00e9diaire de la m\u00e9thode <em>ax.scatter()<\/em>, en d\u00e9finissant les coordonn\u00e9es scalaires, la couleur de remplissage, l&rsquo;opacit\u00e9 et l&rsquo;\u00e9paisseur de contour des marqueurs. \u00c0 ce stade, la figure par d\u00e9faut pr\u00e9senterait un axe horizontal num\u00e9rot\u00e9 de 0 \u00e0 100, surchargeant visuellement le bas du diagramme d&rsquo;une graduation num\u00e9rique qui n&rsquo;apporte aucune valeur analytique \u00e0 l&rsquo;observateur.<\/p>\n<p>L&rsquo;adjonction imm\u00e9diate de la commande <em>ax.get_xaxis().set_visible(False)<\/em> vient imm\u00e9diatement \u00e9purer la sc\u00e8ne graphique. Les spectateurs ne sont plus distraits par l&rsquo;indexation num\u00e9rique artificielle des observations le long du plan horizontal ; leur regard est instantan\u00e9ment guid\u00e9 vers les fluctuations verticales d&rsquo;amplitude, les amas de concentration de variance et les \u00e9ventuelles valeurs aberrantes le long de l&rsquo;axe des ordonn\u00e9es qui, lui, conserve son \u00e9tiquetage rigoureux et son \u00e9chelle de mesure gradu\u00e9e.<\/p>\n<p>L&rsquo;interpr\u00e9tation visuelle d&rsquo;une telle s\u00e9rie ordonn\u00e9e univari\u00e9e gagne immens\u00e9ment en clart\u00e9. L&rsquo;\u0153il humain, lib\u00e9r\u00e9 de l&rsquo;imp\u00e9ratif de lire des indices s\u00e9quentiels continus sur l&rsquo;axe des abscisses, se concentre sur la morphologie globale du nuage. Cette disposition s&rsquo;av\u00e8re particuli\u00e8rement puissante lors des pr\u00e9sentations de contr\u00f4le qualit\u00e9 industriel, o\u00f9 la conformit\u00e9 d&rsquo;un param\u00e8tre physique par rapport \u00e0 des seuils de tol\u00e9rance critiques s&rsquo;\u00e9value verticalement, la chronologie des pi\u00e8ces usin\u00e9es n&rsquo;ayant qu&rsquo;un statut d&rsquo;alignement spatial ordonn\u00e9.<\/p>\n<h3>3.3 Cas d&rsquo;usage exp\u00e9rimentaux : S\u00e9ries temporelles normalis\u00e9es<\/h3>\n<p>L&rsquo;occultation s\u00e9lective de l&rsquo;abscisse trouve un champ d&rsquo;application particuli\u00e8rement f\u00e9cond dans l&rsquo;analyse des s\u00e9ries temporelles normalis\u00e9es au sein des sciences biom\u00e9dicales et de l&rsquo;ing\u00e9nierie des signaux. Lorsque des centaines de segments temporels doivent \u00eatre visualis\u00e9s simultan\u00e9ment afin de traquer l&rsquo;apparition d&rsquo;un motif sp\u00e9cifique ou d&rsquo;une signature pathologique, la pr\u00e9sence r\u00e9p\u00e9t\u00e9e d&rsquo;\u00e9tiquettes de temps sur chaque trac\u00e9 individuel engendre un effet de moirage et une saturation typographique insupportable.<\/p>\n<p>Dans le domaine de la psychophysique exp\u00e9rimentale et des neurosciences comportementales, lors de la pr\u00e9sentation r\u00e9p\u00e9t\u00e9e de stimuli sensoriels, les chercheurs enregistrent des r\u00e9ponses physiologiques synchronis\u00e9es (telles que des variations de conductance cutan\u00e9e, des potentiels d&rsquo;action musculaires ou des r\u00e9ponses pupillaires). Pour superposer ou juxtaposer ces s\u00e9ries temporelles, il est souvent d&rsquo;usage de masquer l&rsquo;axe temporel sous-jacent de mani\u00e8re \u00e0 focaliser l&rsquo;attention exclusive du comit\u00e9 d&rsquo;\u00e9valuation sur l&rsquo;amplitude cr\u00eate-\u00e0-cr\u00eate du ph\u00e9nom\u00e8ne dynamique, la dur\u00e9e du stimulus \u00e9tant explicit\u00e9e une fois pour toutes dans la l\u00e9gende m\u00e9thodologique de la figure.<\/p>\n<p>Une autre application exp\u00e9rimentale majeure r\u00e9side dans la comparaison de signaux multi-\u00e9chelles superpos\u00e9s au moyen de graphiques empil\u00e9s en cascade. En dissimulant l&rsquo;axe des abscisses sur tous les graphiques sup\u00e9rieurs et interm\u00e9diaires, on \u00e9limine les redondances visuelles tout en garantissant un alignement vertical parfait des \u00e9v\u00e9nements temporels. Seul le graphique positionn\u00e9 \u00e0 la base de la pile h\u00e9rite alors d&rsquo;un axe horizontal pleinement document\u00e9, transformant un assemblage disparate de courbes en une matrice de lecture continue et d&rsquo;une remarquable \u00e9l\u00e9gance s\u00e9miologique.<\/p>\n<h2>4. Masquer l&rsquo;axe des ordonn\u00e9es (axe Y) : M\u00e9thode d\u00e9taill\u00e9e et cas pratiques<\/h2>\n<p>Si la dissimulation de l&rsquo;axe horizontal r\u00e9pond souvent \u00e0 des imp\u00e9ratifs d&rsquo;ordonnancement s\u00e9quentiel, le masquage de l&rsquo;axe des ordonn\u00e9es constitue une op\u00e9ration tout aussi strat\u00e9gique, bien que plus d\u00e9licate \u00e0 manier. La dimension verticale \u00e9tant spontan\u00e9ment associ\u00e9e par notre cerveau \u00e0 la grandeur, \u00e0 la puissance ou \u00e0 la quantit\u00e9, occulter cette \u00e9chelle exige des motivations scientifiques solides, telles que l&rsquo;analyse purement morphologique ou la restitution de donn\u00e9es \u00e0 variation unidimensionnelle pr\u00e9pond\u00e9rante.<\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/hide1.png\" alt=\"\" \/><\/figure>\n<h3>4.1 Impl\u00e9mentation technique avec ax.get_yaxis().set_visible(False)<\/h3>\n<p>Sur le plan de l&rsquo;architecture logicielle, la d\u00e9sactivation de la composante verticale s&rsquo;op\u00e8re par une sym\u00e9trie parfaite avec le traitement r\u00e9serv\u00e9 \u00e0 l&rsquo;abscisse. L&rsquo;objet <em>Axes<\/em> met \u00e0 la disposition du programmeur l&rsquo;accesseur d\u00e9di\u00e9 <strong>ax.get_yaxis()<\/strong>, lequel renvoie l&rsquo;instance de la classe <em>matplotlib.axis.YAxis<\/em> en charge de l&rsquo;ordonn\u00e9e cart\u00e9sienne. L&rsquo;appel cha\u00een\u00e9 prend ainsi la forme canonique : <strong>ax.get_yaxis().set_visible(False)<\/strong>.<\/p>\n<p>Cette instruction cible directement le sous-syst\u00e8me d&rsquo;affichage de la hauteur graphique. Elle entra\u00eene la suppression imm\u00e9diate et absolue de l&rsquo;ensemble des graduations verticales positionn\u00e9es sur la gauche (ou la droite si des axes secondaires avaient \u00e9t\u00e9 d\u00e9finis), des valeurs num\u00e9riques textuelles correspondantes ainsi que de toute cha\u00eene de caract\u00e8res assign\u00e9e en tant que label d&rsquo;ordonn\u00e9e via des fonctions comme <em>ax.set_ylabel()<\/em>. L&rsquo;espace lat\u00e9ral gauche du trac\u00e9 se retrouve imm\u00e9diatement d\u00e9pouill\u00e9 de tout apparat chiffr\u00e9.<\/p>\n<p>L&rsquo;interaction de cette commande avec les m\u00e9canismes d&rsquo;ajustement automatique de mise en page, et en particulier avec l&rsquo;algorithme <strong>tight_layout<\/strong>, m\u00e9rite une attention technique approfondie. Lorsque l&rsquo;axe vertical est visible, le gestionnaire de disposition r\u00e9serve une marge lat\u00e9rale substantielle sur la gauche du canevas pour accueillir la largeur cumul\u00e9e des nombres et du titre d&rsquo;ordonn\u00e9e. En passant la visibilit\u00e9 \u00e0 <em>False<\/em>, cette contrainte d&rsquo;encombrement dispara\u00eet. Lors de l&rsquo;\u00e9valuation subs\u00e9quente de <em>tight_layout()<\/em>, le moteur graphique r\u00e9alloue intelligemment cet espace vide \u00e0 la zone de tra\u00e7age utile, \u00e9largissant horizontalement la repr\u00e9sentation des donn\u00e9es.<\/p>\n<p>Il demeure essentiel de noter que l&rsquo;alignement vertical et le positionnement des observations ne subissent aucun d\u00e9calage arbitraire. Si deux points pr\u00e9sentaient un \u00e9cart vertical relatif de cinquante unit\u00e9s de donn\u00e9es dans l&rsquo;espace math\u00e9matique de r\u00e9f\u00e9rence, cet \u00e9cartement spatial en pixels demeure scrupuleusement conserv\u00e9 sur l&rsquo;\u00e9cran ou sur la page imprim\u00e9e. Le calcul de la matrice de transformation affine (qui fait le pont entre les coordonn\u00e9es de donn\u00e9es et les coordonn\u00e9es d&rsquo;affichage de l&rsquo;\u00e9cran) continue de tourner \u00e0 l&rsquo;identique, garantissant la v\u00e9rit\u00e9 g\u00e9om\u00e9trique absolue du trac\u00e9.<\/p>\n<h3>4.2 Exemple pratique : Diagramme de dispersion sans ordonn\u00e9e<\/h3>\n<p>Consid\u00e9rons \u00e0 pr\u00e9sent un cas empirique o\u00f9 un nuage de points bidimensionnel illustre la dispersion d&rsquo;une population d&rsquo;\u00e9chantillons le long d&rsquo;un gradient de temp\u00e9rature (axe X), tandis que l&rsquo;axe vertical ne sert qu&rsquo;\u00e0 introduire une dispersion al\u00e9atoire contr\u00f4l\u00e9e (commun\u00e9ment d\u00e9sign\u00e9e sous le terme de <em>jittering<\/em>) destin\u00e9e \u00e0 pr\u00e9venir la superposition opaque d&rsquo;\u00e9chantillons discrets partageant la m\u00eame valeur d&rsquo;abscisse.<\/p>\n<p>Dans cette configuration, les coordonn\u00e9es verticales affect\u00e9es aux observations ne poss\u00e8dent strictement aucune signification scientifique intrins\u00e8que ; elles constituent un artifice de visualisation g\u00e9om\u00e9trique purement fonctionnel pour faciliter le comptage visuel de la densit\u00e9 locale de points. L&rsquo;affichage d&rsquo;une \u00e9chelle gradu\u00e9e sur l&rsquo;axe Y induirait in\u00e9vitablement en erreur le lecteur novice, qui tenterait d&rsquo;attribuer une interpr\u00e9tation ph\u00e9nom\u00e9nologique \u00e0 une valeur verticale qui n&rsquo;est en r\u00e9alit\u00e9 qu&rsquo;un bruit uniforme g\u00e9n\u00e9r\u00e9 par un algorithme pseudo-al\u00e9atoire.<\/p>\n<p>En ins\u00e9rant m\u00e9thodiquement la commande <em>ax.get_yaxis().set_visible(False)<\/em> au sein du script d&rsquo;affichage apr\u00e8s l&rsquo;instruction de trac\u00e9 <em>ax.scatter()<\/em>, l&rsquo;analyste supprime instantan\u00e9ment ce risque d&rsquo;erreur d&rsquo;interpr\u00e9tation. Le diagramme obtenu met en lumi\u00e8re avec une force visuelle d\u00e9cupl\u00e9e la distribution continue des donn\u00e9es le long du continuum thermique horizontal, tout en offrant une lisibilit\u00e9 parfaite des grappes de concentration gr\u00e2ce au d\u00e9calage vertical d\u00e9pourvu de graduation trompeuse.<\/p>\n<p>L&rsquo;arbitrage entre perte et gain d&rsquo;information visuelle tourne ici r\u00e9solument \u00e0 l&rsquo;avantage de la simplification. La perte apparente de la lecture m\u00e9trique sur l&rsquo;ordonn\u00e9e est en r\u00e9alit\u00e9 un gain majeur de clart\u00e9 s\u00e9mantique : le graphique confesse explicitement sa nature de projection unidimensionnelle augment\u00e9e, focalisant la totalit\u00e9 de l&rsquo;effort cognitif du lecteur sur la seule dimension qui rec\u00e8le une validit\u00e9 exp\u00e9rimentale mesurable.<\/p>\n<h3>4.3 Applications empiriques : Profils spectraux et spectrogrammes<\/h3>\n<p>L&rsquo;occultation de l&rsquo;axe des ordonn\u00e9es trouve une r\u00e9sonance technique majeure dans l&rsquo;affichage des profils spectraux, des densit\u00e9s de probabilit\u00e9 qualitatives et des distributions d&rsquo;\u00e9nergie fr\u00e9quentielle en physique acoustique ou en radioastronomie. Tr\u00e8s souvent, lors de la pr\u00e9sentation d&rsquo;un spectre de puissance d&rsquo;\u00e9mission, l&rsquo;analyste s&rsquo;int\u00e9resse \u00e0 la localisation spectrale exacte des raies de r\u00e9sonance le long de l&rsquo;axe des fr\u00e9quences (axe X), tandis que l&rsquo;intensit\u00e9 sur l&rsquo;axe vertical n&rsquo;est calibr\u00e9e qu&rsquo;en unit\u00e9s arbitraires relatives normalis\u00e9es.<\/p>\n<p>Dans ce contexte pr\u00e9cis, la surcharge typographique induite par l&rsquo;\u00e9tiquetage d&rsquo;amplitudes en d\u00e9cibels ou en microvolts arbitraires d\u00e9grade l&rsquo;imm\u00e9diatet\u00e9 de la d\u00e9tection visuelle des pics spectraux. En supprimant l&rsquo;axe Y via son accesseur orient\u00e9 objet, on transforme le graphique en un profil morphologique pur, o\u00f9 la topologie des creux et des bosses spectrales saute imm\u00e9diatement aux yeux sans que l&rsquo;attention ne soit parasit\u00e9e par des valeurs num\u00e9riques d\u00e9nu\u00e9es d&rsquo;\u00e9talonnage absolu.<\/p>\n<p>Ce proc\u00e9d\u00e9 est \u00e9galement largement mobilis\u00e9 dans le trac\u00e9 en s\u00e9rie de profils physiologiques qualitatifs, par exemple lors de l&rsquo;examen simultan\u00e9 de multiples d\u00e9rivations d&rsquo;ondes \u00e9lectromyographiques (EMG). L&rsquo;alignement horizontal c\u00f4te \u00e0 c\u00f4te de plusieurs profils spectraux d&rsquo;individus distincts, chacun d\u00e9pourvu de son axe vertical individuel, permet une comparaison morphologique instantan\u00e9e de la signature globale des contractions musculaires, favorisant une s\u00e9miologie comparative d&rsquo;une exceptionnelle efficacit\u00e9 clinique.<\/p>\n<h2>5. Masquer simultan\u00e9ment les deux axes : Approches compl\u00e8tes<\/h2>\n<p>Certains objets d&rsquo;\u00e9tude scientifique r\u00e9clament une d\u00e9contextualisation cart\u00e9sienne int\u00e9grale. Lorsque la nature spatiale des donn\u00e9es s&rsquo;auto-suffit, comme dans le cas des matrices topologiques, des images de microscopie \u00e0 balayage ou des repr\u00e9sentations artistiques de champs vectoriels, le maintien d&rsquo;axes gradu\u00e9s devient une aberration s\u00e9miologique. Il devient alors indispensable de ma\u00eetriser les approches permettant de masquer simultan\u00e9ment les deux composantes du rep\u00e8re.<\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/hide2.png\" alt=\"\" \/><\/figure>\n<h3>5.1 Combinaison des m\u00e9thodes get_xaxis() et get_yaxis()<\/h3>\n<p>L&rsquo;approche la plus rigoureuse et la plus respectueuse de l&rsquo;architecture structurelle de Matplotlib pour \u00e9liminer les rep\u00e8res tout en conservant une g\u00e9om\u00e9trie contr\u00f4l\u00e9e consiste \u00e0 combiner l&rsquo;appel successif aux deux m\u00e9thodes d&rsquo;occultation : <strong>ax.get_xaxis().set_visible(False)<\/strong> coupl\u00e9 \u00e0 <strong>ax.get_yaxis().set_visible(False)<\/strong>. Cette double instruction d\u00e9sactive simultan\u00e9ment les deux gestionnaires d&rsquo;axes cart\u00e9siens au sein du cycle de rendu.<\/p>\n<p>L&rsquo;un des avantages les plus remarquables de cette d\u00e9marche conjointe r\u00e9side dans la pr\u00e9servation par d\u00e9faut de la bo\u00eete englobante constitu\u00e9e par les \u00e9pines (<em>spines<\/em>). En effet, comme nous l&rsquo;avons pr\u00e9cis\u00e9 lors de notre analyse architecturale, les bordures rectangulaires entourant l&rsquo;espace graphique n&rsquo;appartiennent pas hi\u00e9rarchiquement aux objets <em>XAxis<\/em> ou <em>YAxis<\/em> ; elles constituent des primitives autonomes reli\u00e9es directement \u00e0 l&rsquo;objet <em>Axes<\/em>. Par cons\u00e9quent, masquer les deux axes via leurs accesseurs respectifs conserve le cadre rectangulaire externe intact.<\/p>\n<p>Cette configuration produit une figure minimaliste d&rsquo;une propret\u00e9 exemplaire : les donn\u00e9es sont enferm\u00e9es au sein d&rsquo;un cadre g\u00e9om\u00e9trique rigoureusement d\u00e9fini qui d\u00e9limite l&rsquo;espace d&rsquo;observation, mais l&rsquo;int\u00e9rieur de ce p\u00e9rim\u00e8tre est int\u00e9gralement purg\u00e9 de toute graduation chiffr\u00e9e, de tout tiret de rep\u00e8re et de toute mention textuelle d&rsquo;\u00e9chelle. Cette m\u00e9thode est pl\u00e9biscit\u00e9e dans les publications acad\u00e9miques pour afficher des trajectoires dans des syst\u00e8mes dynamiques o\u00f9 seule compte la topologie de l&rsquo;attracteur \u00e9trange.<\/p>\n<p>La reproductibilit\u00e9 technique de ce r\u00e9sultat s&rsquo;illustre au sein d&rsquo;un script structur\u00e9 o\u00f9, suite \u00e0 l&rsquo;initialisation de la sc\u00e8ne g\u00e9om\u00e9trique et \u00e0 l&rsquo;ex\u00e9cution des fonctions de trac\u00e9 de lignes ou de surfaces, le programmeur ex\u00e9cute cons\u00e9cutivement les deux instructions de d\u00e9sactivation de visibilit\u00e9 avant d&rsquo;invoquer la compilation du canevas. Le r\u00e9sultat offre un cadre g\u00e9om\u00e9trique parfaitement scell\u00e9 contenant une pure projection vectorielle des relations math\u00e9matiques \u00e9tudi\u00e9es.<\/p>\n<h3>5.2 Utilisation en imagerie et cartographie topographique<\/h3>\n<p>Le champ d&rsquo;application roi du masquage simultan\u00e9 des deux axes est incontestablement celui de l&rsquo;imagerie scientifique, qu&rsquo;il s&rsquo;agisse de matrices de connectivit\u00e9 c\u00e9r\u00e9brale en IRM fonctionnelle, de micrographies \u00e9lectroniques ou de cartes de densit\u00e9 thermique bidimensionnelles g\u00e9n\u00e9r\u00e9es via la fonction <strong>ax.imshow()<\/strong> ou <strong>ax.pcolormesh()<\/strong>. Par d\u00e9faut, lors de l&rsquo;affichage d&rsquo;une matrice bidimensionnelle, Matplotlib plaque sur les bords de l&rsquo;image des axes cart\u00e9siens index\u00e9s sur les indices de lignes et de colonnes de la matrice num\u00e9rique sous-jacente.<\/p>\n<p>Or, pour un clinicien observant un scan c\u00e9r\u00e9bral axial ou pour un astrophysicien scrutant un clich\u00e9 capt\u00e9 par le t\u00e9lescope spatial James Webb, la mention en marge des num\u00e9ros de pixels de 0 \u00e0 1024 ne poss\u00e8de aucune pertinence interpr\u00e9tative et vient polluer la contemplation diagnostique. Les coordonn\u00e9es cart\u00e9siennes de la grille matricielle brisent l&rsquo;illusion continue de l&rsquo;image et d\u00e9tournent l&rsquo;attention des gradients d&rsquo;intensit\u00e9 colorim\u00e9trique qui portent la totalit\u00e9 du sens scientifique.<\/p>\n<p>L&rsquo;\u00e9limination synchronis\u00e9e des deux axes s&rsquo;impose alors comme un pr\u00e9requis absolu. Elle permet \u00e0 l&rsquo;image d&rsquo;occuper la pl\u00e9nitude de son statut iconographique tout en pr\u00e9servant le ratio d&rsquo;aspect g\u00e9om\u00e9trique (<em>aspect ratio<\/em>) indispensable pour \u00e9viter toute anamorphose ou distorsion morphologique de la structure biologique ou c\u00e9leste observ\u00e9e. L&rsquo;observateur peut ainsi focaliser ses processus d&rsquo;int\u00e9gration cognitive exclusivement sur le spectre de fausses couleurs ou sur la texture des motifs spatiaux repr\u00e9sent\u00e9s.<\/p>\n<p>Dans le domaine de la cartographie g\u00e9ospatiale et topographique, cette m\u00e9thode garantit que les projections cartographiques d&rsquo;isovaleurs d&rsquo;\u00e9l\u00e9vation ou de gradients de pression atmosph\u00e9rique ne soient pas d\u00e9coup\u00e9es artificiellement par des graduations de grille d\u00e9su\u00e8tes. Si des coordonn\u00e9es g\u00e9od\u00e9siques de latitude et de longitude s&rsquo;av\u00e8rent n\u00e9cessaires, elles seront r\u00e9introduites sous forme d&rsquo;incrustations typographiques discr\u00e8tes plut\u00f4t que sous l&rsquo;apparence rigide d&rsquo;axes cart\u00e9siens conventionnels encadrant la carte.<\/p>\n<h3>5.3 Impact sur l&rsquo;espace d&rsquo;affichage (bounding box)<\/h3>\n<p>Sur le plan de l&rsquo;ing\u00e9nierie logicielle et du rendu g\u00e9om\u00e9trique, la d\u00e9sactivation simultan\u00e9e des deux axes d\u00e9clenche une modification radicale de la bo\u00eete englobante (<em>bounding box<\/em>) calcul\u00e9e par le moteur de composition de Matplotlib. En temps normal, une fraction consid\u00e9rable de la superficie totale de la figure est accapar\u00e9e par les zones de garde p\u00e9riph\u00e9riques, destin\u00e9es \u00e0 h\u00e9berger l&#8217;empreinte typographique des graduations horizontales, des nombres verticaux et des l\u00e9gendes d&rsquo;axes.<\/p>\n<p>En \u00e9liminant conjointement l&rsquo;axe des abscisses et celui des ordonn\u00e9es, cette contrainte d&rsquo;encombrement volum\u00e9trique s&rsquo;effondre. Les marges superflues qui isolaient la zone de dessin des bordures du canevas peuvent \u00eatre drastiquement r\u00e9duites, maximisant la surface exploitable allou\u00e9e \u00e0 la projection des donn\u00e9es pures. Cette optimisation d&rsquo;espace se r\u00e9v\u00e8le particuli\u00e8rement d\u00e9terminante lors de la conception de figures multi-colonnes destin\u00e9es \u00e0 des revues \u00e0 fort facteur d&rsquo;impact o\u00f9 l&rsquo;encombrement surfacique fait l&rsquo;objet d&rsquo;une tarification ou d&rsquo;une limitation spatiale stricte.<\/p>\n<p>Pour exploiter pleinement ce gain d&rsquo;espace g\u00e9om\u00e9trique, il est recommand\u00e9 de coupler le masquage des deux axes avec l&rsquo;ajustement dynamique des param\u00e8tres de sous-trac\u00e9 au moyen de la commande <strong>fig.subplots_adjust(left=0, right=1, bottom=0, top=1)<\/strong>. Cette instruction \u00e9limine totalement les marges p\u00e9riph\u00e9riques blanches, permettant aux donn\u00e9es g\u00e9om\u00e9triques de co\u00efncider au pixel pr\u00e8s avec les limites physiques de la fen\u00eatre ou du fichier de sortie g\u00e9n\u00e9r\u00e9.<\/p>\n<h2>6. Utilisation alternative de plt.axis(&lsquo;off&rsquo;) et comparaison structurelle<\/h2>\n<p>Bien que le recours aux m\u00e9thodes <em>set_visible()<\/em> sur les accesseurs d&rsquo;axes offre une rigueur orient\u00e9e objet incontestable, Matplotlib met \u00e0 disposition des praticiens une instruction alternative d&rsquo;une redoutable efficacit\u00e9 : l&rsquo;extinction globale via le mot-cl\u00e9 <em>&lsquo;off&rsquo;<\/em>. Loin d&rsquo;\u00eatre un simple synonyme superficiel, cette commande implique des comportements de rendu profond\u00e9ment distincts qu&rsquo;il convient d&rsquo;analyser minutieusement.<\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/hide3.png\" alt=\"\" \/><\/figure>\n<h3>6.1 Fonctionnement de l&rsquo;instruction globale plt.axis(&lsquo;off&rsquo;)<\/h3>\n<p>La commande <strong>plt.axis(&lsquo;off&rsquo;)<\/strong> \u2014 ou son pendant orient\u00e9 objet rigoureux <strong>ax.set_axis_off()<\/strong> \u2014 agit comme un disjoncteur g\u00e9n\u00e9ral sur l&rsquo;ensemble de l&rsquo;appareillage cart\u00e9sien de la sc\u00e8ne graphique. Con\u00e7ue pour offrir une concision syntaxique maximale, cette directive unique ordonne au moteur de rendu de d\u00e9sactiver instantan\u00e9ment et simultan\u00e9ment la visibilit\u00e9 des axes X et Y, l&rsquo;ensemble des tirets et \u00e9tiquettes de graduation, mais \u00e9galement la totalit\u00e9 des \u00e9pines d\u00e9limitant le contour rectangulaire du trac\u00e9.<\/p>\n<p>Sur le plan de l&rsquo;ex\u00e9cution interne, <em>ax.set_axis_off()<\/em> bascule un fanion de contr\u00f4le d&rsquo;\u00e9tat au niveau de l&rsquo;objet <em>Axes<\/em> lui-m\u00eame. Lorsque ce drapeau est lev\u00e9, le cycle de dessin de Matplotlib court-circuite l&rsquo;invocation des sous-routines de tra\u00e7age de la bo\u00eete de d\u00e9limitation et de ses appendices. Le trac\u00e9 r\u00e9sultant se retrouve instantan\u00e9ment flottant dans un espace vierge, d\u00e9pourvu de la moindre ligne de d\u00e9marcation p\u00e9riph\u00e9rique. La vitesse d&rsquo;ex\u00e9cution de cette commande globale est remarquable, \u00e9vitant au d\u00e9veloppeur de r\u00e9diger de multiples lignes d&rsquo;it\u00e9ration sur les diff\u00e9rentes composantes p\u00e9riph\u00e9riques du graphique.<\/p>\n<p>Cette approche est particuli\u00e8rement pris\u00e9e dans les environnements de calcul interactif tels que les carnets Jupyter (<em>Jupyter Notebooks<\/em>) et les consoles de prototypage rapide. Lors de l&rsquo;exploration de collections volumineuses d&rsquo;images ou du rendu instantan\u00e9 de structures mol\u00e9culaires complexes en trois dimensions projet\u00e9es sur le plan, la bri\u00e8vet\u00e9 de <em>plt.axis(&lsquo;off&rsquo;)<\/em> permet de fluidifier la boucle d&rsquo;investigation de l&rsquo;analyste sans encombrer le code de configuration typographique complexe.<\/p>\n<p>Dans une architecture logicielle industrielle ou au sein d&rsquo;une biblioth\u00e8que scientifique r\u00e9utilisable, il conviendra n\u00e9anmoins de privil\u00e9gier formellement la variante orient\u00e9e objet <em>ax.set_axis_off()<\/em>. Cette pr\u00e9caution garantit que l&rsquo;instruction cible sans faille l&rsquo;instance d&rsquo;axe manipul\u00e9e localement, \u00e9cartant tout effet de bord sur d&rsquo;autres visualisations instanci\u00e9es parall\u00e8lement au sein de la m\u00eame session d&rsquo;ex\u00e9cution Python.<\/p>\n<h3>6.2 Comparaison approfondie : set_visible(False) vs plt.axis(&lsquo;off&rsquo;)<\/h3>\n<p>Une confusion persistante r\u00e8gne fr\u00e9quemment chez les utilisateurs interm\u00e9diaires de Matplotlib quant \u00e0 la distinction exacte entre l&rsquo;ablation cibl\u00e9e via <em>set_visible(False)<\/em> et l&rsquo;extinction massive op\u00e9r\u00e9e par <em>plt.axis(&lsquo;off&rsquo;)<\/em>. Le n\u0153ud de cette divergence r\u00e9side dans le statut accord\u00e9 au cadre g\u00e9om\u00e9trique externe (les <em>spines<\/em>) et aux \u00e9l\u00e9ments d&rsquo;annotation textuelle ancr\u00e9s sur les bords du rep\u00e8re cart\u00e9sien.<\/p>\n<p>Lorsque l&rsquo;on utilise la s\u00e9quence combin\u00e9e <em>ax.get_xaxis().set_visible(False)<\/em> et <em>ax.get_yaxis().set_visible(False)<\/em>, on ne neutralise que les instances de la classe <em>Axis<\/em>. Le cadre rectangulaire trac\u00e9 par les quatre \u00e9pines demeure imperturbablement visible, conf\u00e9rant \u00e0 la figure une structure g\u00e9om\u00e9trique d\u00e9limit\u00e9e et ferm\u00e9e. En revanche, l&rsquo;ex\u00e9cution de <em>plt.axis(&lsquo;off&rsquo;)<\/em> ordonne \u00e9galement l&rsquo;invisibilit\u00e9 totale des quatre \u00e9pines. Le graphique perd ainsi tout confinement rectangulaire, les donn\u00e9es venant flotter sans fronti\u00e8re physique au-dessus de la couleur de fond du canevas.<\/p>\n<p>Un autre point de divergence critique concerne la gestion des \u00e9tiquettes de titre et des annotations configur\u00e9es via les m\u00e9thodes de l&rsquo;objet <em>Axes<\/em>. L&rsquo;instruction <em>ax.set_axis_off()<\/em> tend \u00e0 supprimer tout \u00e9l\u00e9ment textuel associ\u00e9 aux rep\u00e8res, bien que le titre principal (configur\u00e9 par <em>ax.set_title()<\/em>) puisse persister selon la version exacte de la biblioth\u00e8que et la configuration du backend. Avec <em>set_visible(False)<\/em> appliqu\u00e9 sur les sous-composants, le titre de l&rsquo;axe est masqu\u00e9 avec son axe respectif, mais le titre g\u00e9n\u00e9ral du trac\u00e9 ainsi que les annotations arbitraires ancr\u00e9es via <em>ax.annotate()<\/em> ou <em>ax.text()<\/em> conservent une stabilit\u00e9 d&rsquo;affichage absolue.<\/p>\n<p>Face au redimensionnement dynamique de la fen\u00eatre graphique ou lors de l&rsquo;exportation vectorielle, ces deux approches manifestent des comportements spatiaux contrast\u00e9s. Avec <em>axis(&lsquo;off&rsquo;)<\/em>, la suppression compl\u00e8te du cadre lib\u00e8re totalement les marges p\u00e9riph\u00e9riques, ce qui peut conduire \u00e0 un agrandissement visuel plus important de la zone de donn\u00e9es. Avec la m\u00e9thode par composant, l&#8217;empreinte g\u00e9om\u00e9trique du rectangle de tra\u00e7age demeure strictement verrouill\u00e9e, offrant une reproductibilit\u00e9 m\u00e9trique sup\u00e9rieure lors de l&rsquo;alignement de graphiques multiples dans une mise en page typographique exigeante.<\/p>\n<h3>6.3 Recommandations selon les besoins de publication scientifique<\/h3>\n<p>Le choix entre ces deux paradigmes ne doit jamais relever du hasard ou d&rsquo;une simple pr\u00e9f\u00e9rence de bri\u00e8vet\u00e9 de frappe clavier ; il doit \u00eatre guid\u00e9 par la nature s\u00e9miologique du message que la figure doit communiquer au lecteur d&rsquo;un rapport ou d&rsquo;une revue scientifique \u00e0 comit\u00e9 de lecture.<\/p>\n<p>L&rsquo;utilisation de la s\u00e9quence <em>set_visible(False)<\/em> \u2014 maintenant un cadre structurant rectangulaire \u2014 est vivement recommand\u00e9e lorsque la zone d&rsquo;observation repr\u00e9sente un domaine spatial fini dont les fronti\u00e8res physiques ont un sens pour l&rsquo;exp\u00e9rimentateur. C&rsquo;est le cas par exemple d&rsquo;une simulation num\u00e9rique en dynamique des fluides au sein d&rsquo;une cavit\u00e9 ferm\u00e9e, ou de l&rsquo;analyse d&rsquo;un espace de recherche born\u00e9 en optimisation math\u00e9matique : le cadre d\u00e9limite le territoire d&rsquo;analyse sans que les graduations num\u00e9riques ne viennent en polluer la surface interne.<\/p>\n<p>\u00c0 l&rsquo;oppos\u00e9, la commande globale <em>plt.axis(&lsquo;off&rsquo;)<\/em> s&rsquo;impose avec \u00e9vidence dans la visualisation des r\u00e9seaux de parent\u00e9 g\u00e9n\u00e9tique, des graphes de connexions neuronales, des nuages de mots morphologiques ou des structures arborescentes de phylog\u00e9nie. Dans de tels cas d&rsquo;usage, imposer un cadre cart\u00e9sien rectangulaire constitue une maladresse graphique flagrante, sugg\u00e9rant faussement l&rsquo;existence de barri\u00e8res spatiales ou de directions privil\u00e9gi\u00e9es l\u00e0 o\u00f9 seules comptent les relations topologiques de proximit\u00e9 et d&rsquo;interconnexion nodale.<\/p>\n<h2>7. Suppression s\u00e9lective des graduations (ticks) sans masquer la ligne d&rsquo;axe<\/h2>\n<p>Il est de nombreuses situations scientifiques o\u00f9 l&rsquo;analyste souhaite conserver la ligne d&rsquo;axe mat\u00e9rielle pour s\u00e9parer visuellement des quadrants ou marquer le seuil z\u00e9ro d&rsquo;une fonction, tout en \u00e9liminant imp\u00e9rativement les graduations num\u00e9riques et les petits tirets de mesure associ\u00e9s. Matplotlib permet de dissocier totalement ces diff\u00e9rentes couches d&rsquo;habillage graphique gr\u00e2ce \u00e0 un contr\u00f4le chirurgical de ses g\u00e9n\u00e9rateurs de graduation.<\/p>\n<h3>7.1 Diff\u00e9renciation entre axe, graduations et \u00e9tiquettes<\/h3>\n<p>Pour intervenir avec pr\u00e9cision sur le rendu graphique, il est indispensable de ma\u00eetriser le vocabulaire technique d\u00e9crivant les composantes atomiques d&rsquo;un axe cart\u00e9sien. La ligne d&rsquo;axe proprement dite (qui se confond visuellement avec l&rsquo;\u00e9pine correspondante) mat\u00e9rialise la direction g\u00e9om\u00e9trique continue. Les <strong>ticks<\/strong> (ou tirets de graduation) constituent les petits segments perpendiculaires trac\u00e9s \u00e0 intervalles math\u00e9matiques r\u00e9guliers ou choisis le long de cette droite. Enfin, les <strong>ticklabels<\/strong> (ou \u00e9tiquettes de graduation) d\u00e9signent les caract\u00e8res typographiques et chiffres qui explicitent la coordonn\u00e9e correspondant \u00e0 chaque tiret.<\/p>\n<p>Conserver la ligne de d\u00e9marcation tout en supprimant les graduations et leurs \u00e9tiquettes r\u00e9pond \u00e0 un besoin fonctionnel fr\u00e9quent : d\u00e9limiter une fronti\u00e8re d&rsquo;espace sans induire de jugement d&rsquo;\u00e9chelle pr\u00e9matur\u00e9. Lorsque des donn\u00e9es proviennent de calibrations non encore certifi\u00e9es ou de signaux semi-quantitatifs, pr\u00e9senter des graduations chiffr\u00e9es peut induire chez le relecteur une illusion trompeuse d&rsquo;exactitude m\u00e9trologique. Dans ce cas, une ligne nue offre un appui visuel structurant tout en pr\u00e9venant avec honn\u00eatet\u00e9 les malentendus d&rsquo;interpr\u00e9tation d&rsquo;\u00e9chelle.<\/p>\n<p>Ce proc\u00e9d\u00e9 de d\u00e9marcation par ligne nue est \u00e9galement indispensable dans la cr\u00e9ation de rep\u00e8res qualitatifs en psychophysique et en sciences de l&rsquo;\u00e9valuation sensorielle. L&rsquo;observateur doit percevoir que les donn\u00e9es sont inscrites au sein d&rsquo;un continuum ordonn\u00e9 (du plus faible au plus fort, ou de la gauche vers la droite), mais l&rsquo;introduction de rep\u00e8res num\u00e9riques conventionnels risquerait d&rsquo;ancrer artificiellement les jugements perceptifs sur des valeurs rondes arbitraires, biaisant la lecture globale du ph\u00e9nom\u00e8ne.<\/p>\n<h3>7.2 M\u00e9thodes de masquage des ticks : set_xticks([]) et tick_params()<\/h3>\n<p>Pour \u00e9liminer les graduations sans faire dispara\u00eetre l&rsquo;armature de l&rsquo;axe, la biblioth\u00e8que offre plusieurs strat\u00e9gies techniques d&rsquo;une efficacit\u00e9 \u00e9prouv\u00e9e. La plus directe consiste \u00e0 vider la liste des localisateurs de graduation au moyen de la m\u00e9thode d\u00e9di\u00e9e <strong>ax.set_xticks([])<\/strong> pour l&rsquo;abscisse, ou <strong>ax.set_yticks([])<\/strong> pour l&rsquo;ordonn\u00e9e. En passant une liste ou un it\u00e9rable strictement vide en param\u00e8tre, le g\u00e9n\u00e9rateur interne (<em>Locator<\/em>) se voit priv\u00e9 de toute coordonn\u00e9e o\u00f9 implanter un tiret ou un nombre, annihilant instantan\u00e9ment l&rsquo;habillage num\u00e9rique sans alt\u00e9rer la ligne d&rsquo;\u00e9pine.<\/p>\n<p>Une approche encore plus souple et modulaire r\u00e9side dans l&rsquo;utilisation de l&rsquo;incontournable m\u00e9thode <strong>ax.tick_params()<\/strong>. V\u00e9ritable couteau suisse du param\u00e9trage des graduations, cette fonction permet de cibler ind\u00e9pendamment les tirets de graduation physiques et les \u00e9tiquettes textuelles chiffr\u00e9es, tant sur l&rsquo;axe majeur que sur l&rsquo;axe mineur. Par exemple, l&rsquo;instruction <em>ax.tick_params(left=False, bottom=False)<\/em> supprime physiquement les petits tirets m\u00e9talliques sur la gauche et le bas du graphique, tandis que l&rsquo;adjonction des param\u00e8tres <em>labelleft=False, labelbottom=False<\/em> assure l&rsquo;occultation exclusive des chiffres tout en maintenant \u00e9ventuellement les tirets visibles.<\/p>\n<p>Il est \u00e9galement envisageable d&rsquo;op\u00e9rer une dissociation asym\u00e9trique en neutralisant uniquement le rendu typographique au moyen de la m\u00e9thode <strong>ax.set_xticklabels([])<\/strong>. Cette m\u00e9thode conserve les petits tirets de graduation le long de l&rsquo;\u00e9pine \u2014 fournissant ainsi un rep\u00e8re discret de r\u00e9gularit\u00e9 ou de granularit\u00e9 temporelle \u2014 tout en \u00e9liminant les cha\u00eenes num\u00e9riques encombrantes. Cette approche interm\u00e9diaire s&rsquo;av\u00e8re particuli\u00e8rement s\u00e9duisante pour concevoir des visualisations condens\u00e9es (<em>sparklines<\/em>) ou des panneaux graphiques miniatures int\u00e9gr\u00e9s dans des tableaux de donn\u00e9es denses.<\/p>\n<h3>7.3 Exemple comparatif : Ligne d&rsquo;axe nue versus suppression totale<\/h3>\n<p>Afin d&rsquo;appr\u00e9cier la port\u00e9e esth\u00e9tique et psychologique de cette nuance technique, analysons la repr\u00e9sentation d&rsquo;une fonction math\u00e9matique sigmo\u00efde th\u00e9orique mod\u00e9lisant une transition de phase ou l&rsquo;activation d&rsquo;un n\u0153ud neuronal synaptique. Comparons deux variantes d&rsquo;affichage : d&rsquo;une part, une figure o\u00f9 l&rsquo;ensemble des axes a \u00e9t\u00e9 radi\u00e9 sans m\u00e9nagement via <em>plt.axis(&lsquo;off&rsquo;)<\/em>, et d&rsquo;autre part, une figure o\u00f9 les \u00e9pines inf\u00e9rieure et gauche ont \u00e9t\u00e9 maintenues sous forme de lignes nues d\u00e9pouill\u00e9es de tout tick via <em>ax.set_xticks([])<\/em> et <em>ax.set_yticks([])<\/em>.<\/p>\n<p>Dans la premi\u00e8re variante totalement \u00e9pur\u00e9e, la courbe sigmo\u00efde flotte sans ancrage dans l&rsquo;espace blanc du document. Bien que tr\u00e8s po\u00e9tique, cette disposition prive l&rsquo;esprit humain d&rsquo;un rep\u00e8re d&rsquo;orthogonalit\u00e9 fondamental. Il devient malais\u00e9 pour le cerveau de d\u00e9terminer si la sigmo\u00efde s&rsquo;aplatit rigoureusement selon une asymptote horizontale ou si le trac\u00e9 subit une l\u00e9g\u00e8re inclinaison angulaire par rapport \u00e0 la page.<\/p>\n<p>Dans la seconde variante \u00e0 lignes d&rsquo;axes nues, les deux segments perpendiculaires formant un angle droit parfait fournissent une r\u00e9f\u00e9rence proprioceptive imm\u00e9diate. L&rsquo;\u0153il saisit instantan\u00e9ment l&rsquo;asymptote horizontale basse et haute par simple comparaison g\u00e9om\u00e9trique avec la droite d&rsquo;abscisse nue. Le sentiment de confinement spatial conf\u00e9r\u00e9 par la ligne d&rsquo;axe nue pr\u00e9serve la lisibilit\u00e9 fonctionnelle du mod\u00e8le dynamique tout en \u00e9vitant la saturation cognitive inh\u00e9rente aux graduations num\u00e9riques superflues.<\/p>\n<h2>8. Gestion des bordures (spines) : Dissocier les \u00e9pines des axes de donn\u00e9es<\/h2>\n<p>L&rsquo;une des plus grandes puissances de conception offertes par Matplotlib r\u00e9side dans son architecture modulaire qui d\u00e9couple strictement les axes de donn\u00e9es (les lignes directrices portant les graduations) des bordures d\u00e9limitant la sc\u00e8ne graphique, d\u00e9nomm\u00e9es <strong>spines<\/strong> (\u00e9pines). Une ma\u00eetrise avanc\u00e9e de l&rsquo;\u00e9puration graphique exige de savoir sculpter ces bordures de fa\u00e7on totalement ind\u00e9pendante pour concevoir des styles visuels asym\u00e9triques d&rsquo;une rare \u00e9l\u00e9gance.<\/p>\n<h3>8.1 Compr\u00e9hension du r\u00f4le des \u00e9pines dans Matplotlib<\/h3>\n<p>Dans la terminologie interne de Matplotlib, les \u00e9pines d\u00e9signent les quatre segments de droite qui dessinent la bo\u00eete de d\u00e9limitation rectangulaire ceinturant la zone de tra\u00e7age. Elles sont r\u00e9pertori\u00e9es dans un dictionnaire d&rsquo;objets accessible via la propri\u00e9t\u00e9 <strong>ax.spines<\/strong>, dont les quatre cl\u00e9s canoniques sont explicitement typ\u00e9es sous forme de cha\u00eenes de caract\u00e8res : <em>&lsquo;top&rsquo;<\/em> (bordure sup\u00e9rieure), <em>&lsquo;bottom&rsquo;<\/em> (bordure inf\u00e9rieure), <em>&lsquo;left&rsquo;<\/em> (bordure gauche) et <em>&lsquo;right&rsquo;<\/em> (bordure droite).<\/p>\n<p>L&rsquo;ind\u00e9pendance structurelle entre les \u00e9pines et les objets <em>Axis<\/em> est une source fr\u00e9quente de perplexit\u00e9 chez les programmeurs d\u00e9butants. Lorsque l&rsquo;on ex\u00e9cute l&rsquo;instruction <em>ax.get_xaxis().set_visible(False)<\/em>, l&rsquo;objet <em>XAxis<\/em> est neutralis\u00e9, ce qui supprime les graduations et les libell\u00e9s. Toutefois, l&rsquo;\u00e9pine inf\u00e9rieure (<em>ax.spines[&lsquo;bottom&rsquo;]<\/em>) demeure par d\u00e9faut active et continue d&rsquo;\u00eatre trac\u00e9e sur le canevas sous la forme d&rsquo;un trait plein noir, mat\u00e9rialisant toujours le bas de la bo\u00eete.<\/p>\n<p>Cette distinction engendre des cons\u00e9quences visuelles majeures. Si l&rsquo;objectif recherch\u00e9 \u00e9tait de faire flotter totalement les donn\u00e9es sans aucun trait de d\u00e9marcation, le simple appel \u00e0 <em>set_visible(False)<\/em> sur les axes X et Y laissera subsister un rectangle noir vide entourant vos donn\u00e9es ! \u00c0 l&rsquo;inverse, si l&rsquo;on souhaite r\u00e9aliser un graphique au style \u00e9pur\u00e9 dit \u00ab \u00e0 la Tufte \u00bb, on cherchera fr\u00e9quemment \u00e0 supprimer les \u00e9pines sup\u00e9rieure et droite (consid\u00e9r\u00e9es comme des redondances graphiques sans utilit\u00e9 informative) tout en conservant les \u00e9pines inf\u00e9rieure et gauche pour supporter les graduations de donn\u00e9es.<\/p>\n<h3>8.2 Technique d&rsquo;effacement individuel des \u00e9pines<\/h3>\n<p>L&rsquo;effacement d&rsquo;une \u00e9pine sp\u00e9cifique ob\u00e9it \u00e0 la m\u00eame logique de manipulation d&rsquo;\u00e9tat que celle r\u00e9gissant l&rsquo;ensemble des \u00e9l\u00e9ments d\u00e9riv\u00e9s de la classe <em>Artist<\/em>. Il suffit d&rsquo;indexer le dictionnaire des \u00e9pines par le nom du c\u00f4t\u00e9 souhait\u00e9 et d&rsquo;invoquer sur l&rsquo;objet renvoy\u00e9 la m\u00e9thode <strong>set_visible(False)<\/strong>. Ainsi, pour bannir la bordure sup\u00e9rieure d&rsquo;un graphique, on r\u00e9digera l&rsquo;instruction limpide : <strong>ax.spines[&lsquo;top&rsquo;].set_visible(False)<\/strong>.<\/p>\n<p>Dans la conception de figures destin\u00e9es aux revues acad\u00e9miques de premier rang, il est devenu une norme \u00e9ditoriale quasi universelle de supprimer simultan\u00e9ment l&rsquo;\u00e9pine sup\u00e9rieure et l&rsquo;\u00e9pine droite afin d&rsquo;all\u00e9ger la composition visuelle. Cette op\u00e9ration combin\u00e9e peut s&rsquo;\u00e9crire s\u00e9quentiellement en deux lignes ou faire l&rsquo;objet d&rsquo;une boucle d&rsquo;it\u00e9ration concise : pour chaque c\u00f4t\u00e9 appartenant \u00e0 la collection (&lsquo;top&rsquo;, &lsquo;right&rsquo;), on applique <em>ax.spines[side].set_visible(False)<\/em>.<\/p>\n<p>Lorsque le projet requiert l&rsquo;\u00e9radication totale des quatre contours sans pour autant passer par l&rsquo;instruction radicale <em>plt.axis(&lsquo;off&rsquo;)<\/em> (par exemple pour conserver un contr\u00f4le chirurgical sur les marges ou certaines annotations de coordonn\u00e9es), il est possible de parcourir dynamiquement l&rsquo;ensemble des valeurs du conteneur d&rsquo;\u00e9pines. L&rsquo;expression it\u00e9rative <em>for spine in ax.spines.values(): spine.set_visible(False)<\/em> assure en une ligne \u00e9l\u00e9gante la volatilisation int\u00e9grale des bordures rectangulaires, conf\u00e9rant \u00e0 la zone de tra\u00e7age une libert\u00e9 spatiale absolue.<\/p>\n<h3>8.3 Exemple appliqu\u00e9 : Graphique sans axes ni contours externes<\/h3>\n<p>Illustrons la puissance de cette dissociation structurelle en concevant un graphique destin\u00e9 \u00e0 tracer une trajectoire comportementale d&rsquo;un organisme vivant (par exemple, le cheminement d&rsquo;un rongeur au sein d&rsquo;une ar\u00e8ne circulaire ferm\u00e9e ou la dispersion de particules de pollen sous l&rsquo;effet du vent). Dans une telle exp\u00e9rience, les donn\u00e9es brutes sont constitu\u00e9es de coordonn\u00e9es cart\u00e9siennes continues (X, Y) enregistr\u00e9es au cours du temps.<\/p>\n<p>L&rsquo;objectif visuel consiste \u00e0 restituer la course de l&rsquo;animal avec une puret\u00e9 morphologique totale : aucun chiffre, aucune graduation, mais \u00e9galement aucun contour rectangulaire artificiel ne doit venir sugg\u00e9rer que l&rsquo;espace exp\u00e9rimental \u00e9tait carr\u00e9 alors qu&rsquo;il s&rsquo;agissait d&rsquo;une ar\u00e8ne circulaire. Nous combinons alors l&rsquo;inhibition des deux axes de donn\u00e9es via <em>ax.get_xaxis().set_visible(False)<\/em> et <em>ax.get_yaxis().set_visible(False)<\/em> avec l&rsquo;effacement int\u00e9gral des quatre \u00e9pines via l&rsquo;it\u00e9ration sur <em>ax.spines.values()<\/em>.<\/p>\n<p>Le r\u00e9sultat graphique obtenu est saisissant de modernit\u00e9 et d&rsquo;efficacit\u00e9 analytique. La trajectoire se dessine sous la forme d&rsquo;un ruban vectoriel fluide, flottant sur un canevas immacul\u00e9. Aucune fronti\u00e8re rectangulaire parasite ne vient heurter le regard ; la distribution spatiale r\u00e9elle des passages de l&rsquo;animal, la densit\u00e9 des m\u00e9andres et les zones d&rsquo;\u00e9vitement central se r\u00e9v\u00e8lent avec une imm\u00e9diatet\u00e9 perceptuelle incomparable, t\u00e9moignant de l&rsquo;impact esth\u00e9tique majeur d&rsquo;un minimalisme rigoureusement ma\u00eetris\u00e9.<\/p>\n<h2>9. Application aux visualisations en sous-graphiques (Subplots)<\/h2>\n<p>La complexit\u00e9 de l&rsquo;ing\u00e9nierie visuelle contemporaine s&rsquo;exprime pleinement dans la conception de planches multi-panneaux (<em>multi-panel figures<\/em>) regroupant des dizaines de sous-graphiques au sein d&rsquo;une m\u00eame figure synth\u00e9tique. C&rsquo;est dans ce contexte architectural avanc\u00e9 que la gestion automatis\u00e9e et conditionnelle de la visibilit\u00e9 des axes devient un savoir-faire critique pour \u00e9viter les redondances visuelles massives et optimiser la compacit\u00e9 globale du document.<\/p>\n<h3>9.1 Masquage d&rsquo;axes dans les grilles via plt.subplots()<\/h3>\n<p>Lorsque l&rsquo;on initialise une matrice de sous-graphiques au moyen de la m\u00e9thode fondamentale <strong>fig, axes = plt.subplots(nrows, ncols)<\/strong>, la variable <em>axes<\/em> retourn\u00e9e par Matplotlib n&rsquo;est pas une instance unique, mais un tableau multidimensionnel d&rsquo;objets (une instance de <em>numpy.ndarray<\/em>) regroupant l&rsquo;ensemble des r\u00e9f\u00e9rences vers les axes cr\u00e9\u00e9s. Manipuler la visibilit\u00e9 au sein d&rsquo;une telle structure matricielle requiert une m\u00e9thodologie programmatique rigoureuse fond\u00e9e sur l&rsquo;it\u00e9ration vectorielle ou l&rsquo;indexation par coordonn\u00e9es matricielles [ligne, colonne].<\/p>\n<p>Dans une grille r\u00e9guli\u00e8re de graphiques partageant la m\u00eame unit\u00e9 de mesure, afficher les \u00e9tiquettes et les graduations sur chaque sous-panneau interm\u00e9diaire engendre une pollution graphique d\u00e9sastreuse. Pour rem\u00e9dier \u00e0 cette lourdeur, Matplotlib met \u00e0 disposition les param\u00e8tres int\u00e9gr\u00e9s <strong>sharex=True<\/strong> et <strong>sharey=True<\/strong> lors de l&rsquo;appel \u00e0 <em>plt.subplots()<\/em>. Lorsque ces arguments sont activ\u00e9s, le moteur graphique proc\u00e8de automatiquement \u00e0 un masquage intelligent des axes int\u00e9rieurs : seules les cellules situ\u00e9es sur la p\u00e9riph\u00e9rie externe (la rang\u00e9e du bas pour l&rsquo;axe X et la colonne de gauche pour l&rsquo;axe Y) conservent leurs graduations et leurs \u00e9tiquettes chiffr\u00e9es.<\/p>\n<p>N\u00e9anmoins, l&rsquo;automatisation native de <em>sharex<\/em> ne r\u00e9pond pas \u00e0 toutes les contraintes de mise en page personnalis\u00e9es, en particulier lorsque la grille pr\u00e9sente des sous-graphiques aux comportements h\u00e9t\u00e9rog\u00e8nes ou lorsque des panneaux doivent \u00eatre masqu\u00e9s de mani\u00e8re asym\u00e9trique. Dans de telles circonstances, l&rsquo;analyste doit proc\u00e9der \u00e0 des it\u00e9rations explicites au moyen de boucles <em>for<\/em> pour appliquer conditionnellement <em>ax.get_xaxis().set_visible(False)<\/em> ou <em>ax.set_axis_off()<\/em> selon l&#8217;emplacement exact de la cellule dans l&rsquo;\u00e9chiquier graphique.<\/p>\n<h3>9.2 Exemple pratique : Matrice 2&#215;2 avec axes partag\u00e9s et masqu\u00e9s<\/h3>\n<p>Consid\u00e9rons la mise en \u0153uvre pratique d&rsquo;une matrice exp\u00e9rimentale \u00e0 quatre quadrants (deux lignes et deux colonnes) destin\u00e9e \u00e0 comparer les r\u00e9ponses de quatre groupes de sujets soumis \u00e0 des conditions pharmacologiques distinctes. L&rsquo;amplitude de r\u00e9ponse (axe vertical) et la dur\u00e9e d&rsquo;action (axe horizontal) ob\u00e9issent \u00e0 des \u00e9chelles comparables et calibr\u00e9es.<\/p>\n<p>Apr\u00e8s avoir instanci\u00e9 la figure au moyen de la commande <em>fig, axes = plt.subplots(2, 2, figsize=(10, 8), sharex=True, sharey=True)<\/em>, nous constatons que Matplotlib neutralise spontan\u00e9ment l&rsquo;axe horizontal du quadrant sup\u00e9rieur gauche [0, 0] et du quadrant sup\u00e9rieur droit [0, 1], tout en occultant l&rsquo;axe vertical du quadrant sup\u00e9rieur droit [0, 1] et du quadrant inf\u00e9rieur droit [1, 1]. Les informations m\u00e9triques critiques sont alors \u00e9l\u00e9gamment condens\u00e9es sur les deux bords ext\u00e9rieurs de la matrice globale.<\/p>\n<p>Pour parfaire l&rsquo;harmonie visuelle de cet ensemble multi-panneaux, il devient imp\u00e9ratif de contr\u00f4ler l&rsquo;espacement intercalaire entre les sous-graphiques. Les graduations et les \u00e9tiquettes chiffr\u00e9es ayant \u00e9t\u00e9 \u00e9limin\u00e9es de l&rsquo;espace interstitiel int\u00e9rieur, la pr\u00e9sence de larges couloirs blancs entre les panneaux perd toute justification fonctionnelle. En recourant \u00e0 la m\u00e9thode <strong>fig.subplots_adjust(wspace=0.05, hspace=0.05)<\/strong>, on resserre consid\u00e9rablement les sous-graphiques les uns contre les autres. Cette compacit\u00e9 offre une lecture compar\u00e9e instantan\u00e9e, les regards pouvant glisser d&rsquo;une condition exp\u00e9rimentale \u00e0 l&rsquo;autre sans subir de rupture d&rsquo;alignement g\u00e9om\u00e9trique.<\/p>\n<h3>9.3 Traitement des sous-graphiques vides ou inutilis\u00e9s<\/h3>\n<p>Un d\u00e9fi de mise en page r\u00e9current dans la pratique scientifique r\u00e9side dans la gestion des grilles dont le nombre total de conditions exp\u00e9rimentales ne correspond pas exactement au produit du nombre de lignes par le nombre de colonnes. Supposons par exemple qu&rsquo;un protocole comporte sept conditions exp\u00e9rimentales distinctes. Si l&rsquo;on organise la figure sous la forme d&rsquo;une matrice \u00e9quilibr\u00e9e de huit cellules (deux lignes et quatre colonnes, ou quatre lignes et deux colonnes), la huiti\u00e8me cellule demeurera irr\u00e9m\u00e9diablement vierge de donn\u00e9es.<\/p>\n<p>Par d\u00e9faut, Matplotlib instancie tous les sous-graphiques demand\u00e9s et affiche fid\u00e8lement pour la cellule orpheline une bo\u00eete rectangulaire grise ou blanche bord\u00e9e de ses quatre \u00e9pines et orn\u00e9e de graduations gradu\u00e9es de 0 \u00e0 1. Ce cadre vide abandonn\u00e9 au milieu ou \u00e0 l&rsquo;angle d&rsquo;une planche scientifique produit un effet visuel particuli\u00e8rement disgracieux et non professionnel, donnant au relecteur l&rsquo;impression d\u00e9plaisante d&rsquo;une figure inachev\u00e9e ou d&rsquo;une erreur de chargement de donn\u00e9es.<\/p>\n<p>La parade technique est d&rsquo;une grande simplicit\u00e9 mais requiert un geste programmatique explicite. Il convient d&rsquo;isoler l&rsquo;axe surnum\u00e9raire \u2014 dans notre exemple, <em>axes[1, 3]<\/em> ou <em>axes.flatten()[7]<\/em> \u2014 et de lui appliquer sans d\u00e9lai la commande d&rsquo;extinction totale : <strong>axes[1, 3].set_axis_off()<\/strong>. En d\u00e9sactivant cet axe orphelin, le canevas redevient totalement transparent et vierge \u00e0 cet emplacement pr\u00e9cis, pr\u00e9servant l&rsquo;alignement g\u00e9om\u00e9trique impeccable des sept autres panneaux sans infliger de cadre fant\u00f4me \u00e0 la mise en page g\u00e9n\u00e9rale.<\/p>\n<h2>10. Impact cognitif et s\u00e9miologique de la suppression des axes en contexte scientifique<\/h2>\n<p>La d\u00e9cision d&rsquo;\u00e9purer une figure en supprimant tout ou partie de ses composantes m\u00e9triques ne rel\u00e8ve pas simplement du confort esth\u00e9tique ; elle engage directement la responsabilit\u00e9 s\u00e9miologique du chercheur face \u00e0 son lectorat. Une compr\u00e9hension affin\u00e9e des m\u00e9canismes de traitement de l&rsquo;information visuelle permet de saisir pourquoi et comment cette d\u00e9marche peut magnifier l&rsquo;intelligibilit\u00e9 d&rsquo;une d\u00e9monstration ou, \u00e0 l&rsquo;inverse, basculer vers un \u00e9cueil de manipulation visuelle.<\/p>\n<h3>10.1 B\u00e9n\u00e9fices perceptifs : R\u00e9duction de la surcharge d&rsquo;information<\/h3>\n<p>D&rsquo;apr\u00e8s les lois fondatrices de la psychologie de la forme (<em>Gestaltpsychologie<\/em>) et les travaux pionniers du cartographe fran\u00e7ais <a rel=\"noopener noreferrer\" href=\"https:\/\/fr.wikipedia.org\/wiki\/S%C3%A9miologie_graphique\">Jacques Bertin<\/a>, le cerveau humain d\u00e9code prioritairement les variations spatiales continues, les continuit\u00e9s de courbure, les groupements de proximit\u00e9 et les contrastes chromatiques avant de proc\u00e9der \u00e0 la lecture s\u00e9quentielle et analytique des symboles alphanum\u00e9riques. Lorsque des axes cart\u00e9siens charg\u00e9s encombrent la sc\u00e8ne, ils d\u00e9clenchent une comp\u00e9tition attentionnelle f\u00e9roce entre le traitement visuel primaire des formes et le d\u00e9codage symbolique secondaire des nombres.<\/p>\n<p>La th\u00e9orie de la charge cognitive appliqu\u00e9e aux repr\u00e9sentations graphiques montre qu&rsquo;en canalisant l&rsquo;attention de l&rsquo;observateur vers la g\u00e9om\u00e9trie pure du signal, on lib\u00e8re des ressources mentales pr\u00e9cieuses pour la d\u00e9tection imm\u00e9diate des r\u00e9gularit\u00e9s structurales, des sym\u00e9tries bris\u00e9es et des transitions critiques. L&rsquo;\u00e9limination des axes de r\u00e9f\u00e9rence permet \u00e0 l&rsquo;\u0153il d&#8217;embrasser la vue d&rsquo;ensemble (la tendance macroscopique) sans s&rsquo;enliser dans l&rsquo;analyse pointilleuse et pr\u00e9matur\u00e9e des micro-graduations de d\u00e9tail.<\/p>\n<p>Cette facilitation perceptive est particuli\u00e8rement \u00e9clatante dans la pr\u00e9sentation des mod\u00e8les dynamiques non lin\u00e9aires, tels que les attracteurs de Lorenz ou les bifurcations de Feigenbaum. Face \u00e0 de tels objets math\u00e9matiques, la pr\u00e9sence d&rsquo;axes gradu\u00e9s n&rsquo;apporte strictement rien \u00e0 la compr\u00e9hension de la topologie sous-jacente et ne fait que briser l&rsquo;harmonie des faisceaux de trajectoires orbitales. L&rsquo;\u00e9puration visuelle devient alors le vecteur d&rsquo;une compr\u00e9hension holistique sup\u00e9rieure.<\/p>\n<h3>10.2 Limites \u00e9pist\u00e9mologiques et \u00e9thique de la visualisation<\/h3>\n<p>Cette qu\u00eate d&rsquo;\u00e9l\u00e9gance minimaliste ne doit cependant jamais s&rsquo;affranchir des devoirs de transparence et d&rsquo;int\u00e9grit\u00e9 qui fondent la d\u00e9marche scientifique. L&rsquo;omission d\u00e9lib\u00e9r\u00e9e ou imprudente d&rsquo;un axe d&rsquo;amplitude peut facilement se muer en un outil de distorsion cognitive, masquant sciemment l&rsquo;insignifiance d&rsquo;une variation exp\u00e9rimentale ou exag\u00e9rant \u00e0 l&rsquo;inverse un bruit de fond statistique au d\u00e9triment de la rigueur d\u00e9ontologique.<\/p>\n<p>L&rsquo;\u00e9thique de la visualisation de donn\u00e9es impose que toute suppression d&rsquo;axe cart\u00e9sien soit rigoureusement compens\u00e9e par des dispositifs informatifs de substitution clairs. Si l&rsquo;axe des ordonn\u00e9es est masqu\u00e9 sur un trac\u00e9 de potentiel d&rsquo;action \u00e9lectrique, la figure doit imp\u00e9rativement int\u00e9grer dans un coin neutre une barre d&rsquo;\u00e9chelle \u00e9talonn\u00e9e (<em>scale bar<\/em>) mentionnant explicitement l&rsquo;\u00e9chelle physique repr\u00e9sent\u00e9e (par exemple un segment vertical l\u00e9gend\u00e9 <em>50 \u00b5V<\/em> et un segment horizontal l\u00e9gend\u00e9 <em>10 ms<\/em>), ou fournir cette pr\u00e9cision sans \u00e9quivoque au sein du texte de la l\u00e9gende.<\/p>\n<p>Dans les disciplines quantitatives telles que l&rsquo;\u00e9pid\u00e9miologie clinique, l&rsquo;\u00e9valuation des risques actuariels ou la psychologie diff\u00e9rentielle, la dissimulation totale des \u00e9chelles de coordonn\u00e9es sans justification m\u00e9thodologique explicite constitue un motif l\u00e9gitime de rejet par les comit\u00e9s de lecture des revues savantes. L&rsquo;exp\u00e9rimentateur doit toujours \u00eatre en mesure de justifier son choix : le masquage doit proc\u00e9der d&rsquo;une volont\u00e9 p\u00e9dagogique de clarification structurelle et jamais d&rsquo;une strat\u00e9gie d&rsquo;occultation de la marge d&rsquo;erreur ou de la variabilit\u00e9 r\u00e9elle des mesures.<\/p>\n<h2>11. Pi\u00e8ges courants, erreurs d&rsquo;interpr\u00e9tation et d\u00e9bogage technique<\/h2>\n<p>La mise en \u0153uvre pratique de la suppression des axes dans Matplotlib r\u00e9serve parfois des surprises d\u00e9concertantes, y compris aux utilisateurs chevronn\u00e9s. Des interactions impr\u00e9vues entre feuilles de styles, des disparitions collat\u00e9rales d&rsquo;annotations textuelles et des anomalies d&rsquo;exportation de fichiers constituent autant d&rsquo;\u00e9cueils classiques qu&rsquo;il est indispensable de savoir anticiper et corriger avec m\u00e9thode.<\/p>\n<h3>11.1 Conflits entre styles pr\u00e9configur\u00e9s et masquage manuel<\/h3>\n<p>L&rsquo;utilisation de th\u00e8mes esth\u00e9tiques tiers, tels que ceux propos\u00e9s nativement par le sous-module <em>matplotlib.style<\/em> (par exemple <em>classic<\/em>, <em>ggplot<\/em>, <em>seaborn<\/em>) ou par la biblioth\u00e8que de haut niveau <strong>Seaborn<\/strong>, introduit fr\u00e9quemment des conflits d&rsquo;\u00e9tat au sein de l&rsquo;arborescence des propri\u00e9t\u00e9s graphiques. Ces th\u00e8mes pr\u00e9configur\u00e9s injectent un ensemble massif de r\u00e8gles globales dans le dictionnaire de configuration (<em>rcParams<\/em>), red\u00e9finissant d&rsquo;autorit\u00e9 la visibilit\u00e9 des bordures, l&rsquo;activation des grilles en arri\u00e8re-plan et la disposition des graduations.<\/p>\n<p>Un pi\u00e8ge r\u00e9current survient lorsque l&rsquo;utilisateur applique un style pr\u00e9configur\u00e9 <em>apr\u00e8s<\/em> avoir ex\u00e9cut\u00e9 ses commandes manuelles de masquage d&rsquo;axes. Dans de nombreuses circonstances, la r\u00e9initialisation du style \u00e9crase les drapeaux de visibilit\u00e9 pr\u00e9c\u00e9demment positionn\u00e9s, faisant r\u00e9appara\u00eetre \u00e0 l&rsquo;\u00e9cran des \u00e9pines ou des lignes de grille que l&rsquo;on croyait avoir d\u00e9finitivement bannies. Pour conjurer cette interf\u00e9rence, il est imp\u00e9ratif d&rsquo;ordonnancer rigoureusement le flux d&rsquo;instructions du script : l&rsquo;activation du th\u00e8me (via <em>plt.style.use()<\/em> ou <em>sns.set_theme()<\/em>) doit obligatoirement figurer en t\u00eate d&rsquo;ex\u00e9cution, pr\u00e9alablement \u00e0 toute instanciation d&rsquo;axe et \u00e0 toute commande d&rsquo;occultation chirurgicale.<\/p>\n<p>De m\u00eame, certaines fonctions de haut niveau de Seaborn (\u00e0 l&rsquo;instar de <em>sns.despine()<\/em>) modifient la visibilit\u00e9 des \u00e9pines mais peuvent entrer en collision avec des appels concurrents \u00e0 <em>set_axis_off()<\/em>. La ma\u00eetrise exclusive de l&rsquo;interface orient\u00e9e objet de Matplotlib, appliqu\u00e9e syst\u00e9matiquement en toute fin de cha\u00eene de configuration graphique, demeure le seul rempart fiable pour garantir que vos ordres d&rsquo;invisibilit\u00e9 ne soient pas contourn\u00e9s par une surcouche logicielle d&rsquo;habillage.<\/p>\n<h3>11.2 Perte involontaire des \u00e9tiquettes de titre ou d&rsquo;annotations<\/h3>\n<p>Une m\u00e9saventure classique lors de l&rsquo;apprentissage de la commande <em>ax.get_xaxis().set_visible(False)<\/em> r\u00e9side dans la disparition inopin\u00e9e et incomprise du titre qui avait \u00e9t\u00e9 patiemment assign\u00e9 \u00e0 l&rsquo;axe au moyen de l&rsquo;instruction standard <em>ax.set_xlabel(&lsquo;Temps \u00e9coul\u00e9 (s)&rsquo;)<\/em>. Comme nous l&rsquo;avons explicit\u00e9 dans notre revue architecturale, le label de l&rsquo;axe est un subordonn\u00e9 direct de l&rsquo;objet <em>XAxis<\/em> ; d\u00e9sactiver la visibilit\u00e9 du parent \u00e9teint inconditionnellement celle de tous ses enfants.<\/p>\n<p>Pour contourner ce verrou structurel et maintenir un intitul\u00e9 s\u00e9mantique textuel tout en \u00e9liminant les graduations chiffr\u00e9es et les tirets de rep\u00e8re, plusieurs strat\u00e9gies de substitution existent. La premi\u00e8re consiste, comme nous l&rsquo;avons explor\u00e9 au chapitre 7, \u00e0 ne pas toucher \u00e0 la visibilit\u00e9 de l&rsquo;axe lui-m\u00eame, mais \u00e0 d\u00e9sactiver uniquement ses composantes de graduation via <em>ax.set_xticks([])<\/em>. Dans ce cas, le label de l&rsquo;axe demeure fi\u00e8rement affich\u00e9 sous la ligne d&rsquo;axe d\u00e9nud\u00e9e.<\/p>\n<p>Si l&rsquo;axe a d\u00e9j\u00e0 \u00e9t\u00e9 int\u00e9gralement masqu\u00e9, la solution \u00e9l\u00e9gante consiste \u00e0 s&rsquo;\u00e9manciper du label d&rsquo;axe conventionnel en recourant au syst\u00e8me universel d&rsquo;annotation de texte de Matplotlib via la m\u00e9thode <strong>ax.text()<\/strong> ou la fonction g\u00e9n\u00e9rale <strong>fig.text()<\/strong>. En renseignant manuellement les coordonn\u00e9es spatiales normalis\u00e9es (exprim\u00e9es dans le rep\u00e8re relatif de la figure de 0 \u00e0 1 via le transformateur <em>transform=ax.transAxes<\/em>), le concepteur peut implanter une \u00e9tiquette descriptive avec une libert\u00e9 de placement typographique absolue, insensible au masquage des axes sous-jacents.<\/p>\n<p>Il en va de m\u00eame pour la l\u00e9gende g\u00e9n\u00e9rale du graphique (instanci\u00e9e par <em>ax.legend()<\/em>). Contrairement \u00e0 une crainte r\u00e9pandue, la l\u00e9gende n&rsquo;est pas attach\u00e9e hi\u00e9rarchiquement aux objets <em>Axis<\/em>, mais directement \u00e0 l&rsquo;objet <em>Axes<\/em>. Par cons\u00e9quent, masquer les deux axes au moyen de <em>set_visible(False)<\/em> n&rsquo;entra\u00eene nullement la destruction de votre bo\u00eete de l\u00e9gende. Celle-ci continuera de s&rsquo;afficher avec une parfaite limpidit\u00e9 au sein du canevas, assurant la transmissibilit\u00e9 du codage couleur des courbes orphelines de coordonn\u00e9es.<\/p>\n<h3>11.3 Probl\u00e8mes d&rsquo;exportation de figures (savefig)<\/h3>\n<p>L&rsquo;\u00e9preuve de v\u00e9rit\u00e9 dans la production de figures scientifiques destin\u00e9es \u00e0 l&rsquo;\u00e9dition r\u00e9side dans leur compilation finale sous forme de fichiers vectoriels ou matriciels via la fonction <strong>fig.savefig()<\/strong>. C&rsquo;est pr\u00e9cis\u00e9ment \u00e0 cette \u00e9tape ultime que se manifestent souvent des d\u00e9convenues majeures : apparition de marges blanches asym\u00e9triques d\u00e9mesur\u00e9es ou, \u00e0 l&rsquo;inverse, rognage brutal de points de donn\u00e9es situ\u00e9s en p\u00e9riph\u00e9rie extr\u00eame du canevas.<\/p>\n<p>Ces dysfonctionnements r\u00e9sultent du mode de calcul standard de la zone d&#8217;emprise de la figure lors de l&rsquo;exportation. Par d\u00e9faut, le moteur d&rsquo;enregistrement applique les dimensions statiques assign\u00e9es lors de la cr\u00e9ation de la figure, sans recalculer la disparition des espaces autrefois r\u00e9serv\u00e9s aux graduations d&rsquo;axes. Il en r\u00e9sulte un cadre de sortie anormalement spacieux, pollu\u00e9 par des bordures vides qui compliquent l&rsquo;insertion de l&rsquo;image au sein d&rsquo;un document LaTeX ou d&rsquo;une maquette \u00e9ditoriale.<\/p>\n<p>Le rem\u00e8de technique absolu \u00e0 cet \u00e9cueil consiste \u00e0 syst\u00e9matiquement adjoindre l&rsquo;argument cl\u00e9 <strong>bbox_inches=&rsquo;tight&rsquo;<\/strong> lors de l&rsquo;invocation de l&rsquo;exportation : <em>fig.savefig(&lsquo;figure.pdf&rsquo;, bbox_inches=&rsquo;tight&rsquo;)<\/em>. Cette directive commande au moteur de rendu d&rsquo;effectuer une passe de pr\u00e9-calcul dynamique pour \u00e9valuer la bo\u00eete englobante minimale enserrant l&rsquo;ensemble des \u00e9l\u00e9ments graphiques <em>r\u00e9ellement visibles<\/em>. Toutes les marges blanches devenues caduques du fait du masquage des axes sont alors automatiquement purg\u00e9es lors de la d\u00e9coupe finale du fichier de publication.<\/p>\n<p>Enfin, pour les sorties au format matriciel (PNG, TIFF), il est imp\u00e9ratif d&rsquo;accompagner ce param\u00e8tre de d\u00e9coupe d&rsquo;une r\u00e9solution g\u00e9om\u00e9trique conforme aux standards de l&rsquo;\u00e9dition scientifique internationale en sp\u00e9cifiant <strong>dpi=300<\/strong> ou <strong>dpi=600<\/strong>. L&rsquo;absence d&rsquo;axes ne pardonne aucune approximation dans le lissage des courbes : la finesse de pixellisation des trac\u00e9s vectoriels d\u00e9nud\u00e9s garantira la parfaite lisibilit\u00e9 des motifs les plus t\u00e9nus lors de l&rsquo;impression sur papier couch\u00e9.<\/p>\n<h2>12. Synth\u00e8se m\u00e9thodologique et bonnes pratiques pour l&rsquo;\u00e9puration graphique<\/h2>\n<p>Pour clore ce trait\u00e9 technique, il convient de structurer les connaissances acquises sous la forme d&rsquo;un canevas m\u00e9thodologique d\u00e9cisionnel clair et de fournir un mod\u00e8le d&rsquo;impl\u00e9mentation logicielle hautement r\u00e9utilisable, con\u00e7u pour s&rsquo;ins\u00e9rer naturellement dans vos pipelines de traitement et d&rsquo;analyse de donn\u00e9es les plus ambitieux.<\/p>\n<h3>12.1 Arbre de d\u00e9cision pour le masquage des axes<\/h3>\n<p>Face \u00e0 la diversit\u00e9 des options techniques diss\u00e9qu\u00e9es tout au long de cet ouvrage, le choix de la m\u00e9thode idoine peut \u00eatre synth\u00e9tis\u00e9 au travers d&rsquo;un arbre de d\u00e9cision analytique fond\u00e9 sur le cahier des charges s\u00e9miologique de votre projet graphique :<\/p>\n<ul>\n<li><strong>Objectif 1 : \u00c9limination absolue de tout apparat graphique pour imagerie, r\u00e9seaux ou art g\u00e9n\u00e9ratif.<\/strong><br \/>\n       <br \/><em>D\u00e9cision :<\/em> Invoquer la m\u00e9thode unifi\u00e9e <strong>ax.set_axis_off()<\/strong>. Vous obtenez un canevas vierge o\u00f9 les donn\u00e9es flottent sans aucune d\u00e9limitation rectangulaire ni rep\u00e8re textuel. Id\u00e9al pour les posters, les diapositives de pr\u00e9sentation orale et les micrographies.<\/li>\n<li><strong>Objectif 2 : Pr\u00e9servation d&rsquo;un cadre spatial rectangulaire ferm\u00e9 sans aucune valeur chiffr\u00e9e.<\/strong><br \/>\n       <br \/><em>D\u00e9cision :<\/em> Combiner l&rsquo;extinction des deux composantes vectorielles au moyen de <strong>ax.get_xaxis().set_visible(False)<\/strong> et <strong>ax.get_yaxis().set_visible(False)<\/strong>. Les quatre \u00e9pines demeurent actives, d\u00e9limitant impeccablement le domaine de simulation math\u00e9matique.<\/li>\n<li><strong>Objectif 3 : Pr\u00e9servation des axes mat\u00e9riels (lignes) avec suppression exclusive des chiffres et tirets.<\/strong><br \/>\n       <br \/><em>D\u00e9cision :<\/em> Utiliser la m\u00e9thode d\u00e9di\u00e9e <strong>ax.set_xticks([])<\/strong> et <strong>ax.set_yticks([])<\/strong> ou configurer pr\u00e9cis\u00e9ment les drapeaux via <strong>ax.tick_params()<\/strong>. Les droites orthogonales d&rsquo;appui subsistent, pr\u00e9venant toute ambigu\u00eft\u00e9 sur l&rsquo;orientation de l&rsquo;espace sans surcharger la vue de m\u00e9triques superflues.<\/li>\n<li><strong>Objectif 4 : Conception d&rsquo;une figure multi-panneaux compacte \u00e0 \u00e9chelles homog\u00e8nes.<\/strong><br \/>\n       <br \/><em>D\u00e9cision :<\/em> Exploiter l&rsquo;orchestration native <strong>plt.subplots(&#8230;, sharex=True, sharey=True)<\/strong> associ\u00e9e \u00e0 une r\u00e9duction manuelle des interstices via <strong>subplots_adjust(wspace=&#8230;, hspace=&#8230;)<\/strong>. Les axes int\u00e9rieurs redondants sont dissimul\u00e9s automatiquement au profit d&rsquo;une lecture p\u00e9riph\u00e9rique \u00e9pur\u00e9e.<\/li>\n<\/ul>\n<h3>12.2 Mod\u00e8le de script r\u00e9utilisable et standardis\u00e9<\/h3>\n<p>Afin de traduire ces principes en un outil op\u00e9rationnel de haute valeur ajout\u00e9e, nous proposons la structure d&rsquo;une fonction Python modulaire et robuste, baptis\u00e9e <em>configurer_epuration_axes<\/em>. Con\u00e7ue dans le respect strict des pr\u00e9ceptes du g\u00e9nie logiciel orient\u00e9 objet, cette routine param\u00e9trique permet de sculpter \u00e0 la demande l&rsquo;habillage de n&rsquo;importe quel objet <em>Axes<\/em> de Matplotlib au sein de vos scripts automatis\u00e9s.<\/p>\n<p>La logique de conception de cette fonction repose sur une signature formelle explicite recevant en premier argument l&rsquo;instance d&rsquo;axe \u00e0 manipuler, suivie de param\u00e8tres bool\u00e9ens optionnels pilotant l&rsquo;occultation de l&rsquo;axe X, de l&rsquo;axe Y, des \u00e9pines sup\u00e9rieure et droite, ou l&rsquo;ablation totale du cadre p\u00e9riph\u00e9rique. En encapsulant ces embranchements conditionnels au sein d&rsquo;une routine unifi\u00e9e, vous \u00e9vitez la dispersion de lignes de code redondantes \u00e0 travers vos diff\u00e9rents modules de traitement et offrez \u00e0 vos visualisations une charte graphique d&rsquo;une coh\u00e9rence absolue.<\/p>\n<p>Au sein du corps de cette fonction, le d\u00e9veloppeur impl\u00e9mente les tests d&rsquo;\u00e9tat m\u00e9thodiques : si l&rsquo;instruction de masquage de l&rsquo;axe horizontal est requise, la fonction appelle de mani\u00e8re s\u00e9curis\u00e9e <em>ax.get_xaxis().set_visible(False)<\/em>. Si la suppression des \u00e9pines esth\u00e9tiques superflues est sollicit\u00e9e, elle parcourt le sous-ensemble de bordures d\u00e9sign\u00e9 pour leur assigner l&rsquo;\u00e9tat invisible. Enfin, si une compensation d&rsquo;\u00e9chelle est imp\u00e9rative, elle injecte une barre de calibration calibr\u00e9e via les primitives graphiques appropri\u00e9es.<\/p>\n<p>En conclusion, la ma\u00eetrise de l&rsquo;invisibilit\u00e9 des axes dans Matplotlib illustre avec \u00e9clat cet aphorisme intemporel de l&rsquo;aviation et du design formul\u00e9 par Antoine de Saint-Exup\u00e9ry : la perfection est atteinte, non pas lorsqu&rsquo;il n&rsquo;y a plus rien \u00e0 ajouter, mais lorsqu&rsquo;il n&rsquo;y a plus rien \u00e0 retirer. En purgeant vos repr\u00e9sentations visuelles des art\u00e9facts cart\u00e9siens obsol\u00e8tes, vous magnifiez l&rsquo;\u00e9loquence intrins\u00e8que des donn\u00e9es pures, offrant \u00e0 vos travaux de recherche une r\u00e9sonance scientifique et une beaut\u00e9 formelle incomparables.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>Bertin, J. (1967). <em>S\u00e9miologie graphique : Les diagrammes, les r\u00e9seaux, les cartes<\/em>. \u00c9ditions Gauthier-Villars.<\/li>\n<li>Cleveland, W. S. (1993). <em>Visualizing data<\/em>. Hobart Press.<\/li>\n<li>Hunter, J. D. (2007). Matplotlib: A 2D graphics environment. <em>Computing in Science &amp; Engineering<\/em>, 9(3), 90\u201395. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1109\/MCSE.2007.55\">https:\/\/doi.org\/10.1109\/MCSE.2007.55<\/a><\/li>\n<li>Matplotlib Development Team. (2023). <em>Matplotlib: Visualization with Python (Version 3.8)<\/em>. NumFOCUS. <a rel=\"noopener noreferrer\" href=\"https:\/\/matplotlib.org\/stable\/api\/axes_api.html\">https:\/\/matplotlib.org\/stable\/api\/axes_api.html<\/a><\/li>\n<li>Rougier, N. P. (2021). <em>Scientific visualization: Python + Matplotlib<\/em>. Nicolas P. Rougier. <a rel=\"noopener noreferrer\" href=\"https:\/\/hal.inria.fr\/hal-03427195\">https:\/\/hal.inria.fr\/hal-03427195<\/a><\/li>\n<li>Sweller, J. (2011). Cognitive load theory. Dans J. P. Mestre &amp; B. H. Ross (\u00c9ds.), <em>The psychology of learning and motivation: Cognition in education<\/em> (Vol. 55, pp. 37\u201376). Academic Press. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1016\/B973Y-0-12-387693-5.00002-8\">https:\/\/doi.org\/10.1016\/B973Y-0-12-387693-5.00002-8<\/a><\/li>\n<li>Tufte, E. R. (2001). <em>The visual display of quantitative information<\/em> (2e \u00e9d.). Graphics Press.<\/li>\n<li>Waskom, M. L. (2021). Seaborn: statistical data visualization. <em>Journal of Open Source Software<\/em>, 6(60), 3021. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.21105\/joss.03021\">https:\/\/doi.org\/10.21105\/joss.03021<\/a><\/li>\n<li>Wilke, C. O. (2019). <em>Fundamentals of data visualization: A primer on making informative and compelling figures<\/em>. O&rsquo;Reilly Media.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Guide acad\u00e9mique complet pour masquer les axes X et Y dans Matplotlib : m\u00e9thodes set_visible, plt.axis(&lsquo;off&rsquo;), gestion des \u00e9pines et applications pratiques.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[2465,2687],"tags":[2482,4798,4799,3150,2468],"class_list":["post-2748","psych_stat","type-psych_stat","status-publish","hentry","category-programmation-python","category-visualisation-de-donnees","tag-data-science","tag-graphiques","tag-masquage-daxes","tag-matplotlib","tag-python"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/2748","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat"}],"about":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/types\/psych_stat"}],"author":[{"embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2748"}],"version-history":[{"count":1,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/2748\/revisions"}],"predecessor-version":[{"id":16394,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/2748\/revisions\/16394"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2748"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2748"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2748"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}