{"id":2489,"date":"2026-10-14T18:00:52","date_gmt":"2026-10-14T18:00:52","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-utiliser-fonction-par-dans-r\/"},"modified":"2026-10-14T18:00:52","modified_gmt":"2026-10-14T18:00:52","slug":"comment-utiliser-fonction-par-dans-r","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-utiliser-fonction-par-dans-r","title":{"rendered":"Comment utiliser la fonction par() dans R"},"content":{"rendered":"<p>Dans l&rsquo;\u00e9cosyst\u00e8me du langage de programmation statistique R, la visualisation de donn\u00e9es repose historiquement sur un moteur graphique natif d&rsquo;une flexibilit\u00e9 et d&rsquo;une robustesse remarquables. Bien que l&rsquo;av\u00e8nement de grammaires graphiques d\u00e9claratives modernes, port\u00e9es par des paquetages tiers renomm\u00e9s, ait profond\u00e9ment transform\u00e9 les habitudes d&rsquo;analyse exploratoire, le syst\u00e8me de base demeure la colonne vert\u00e9brale des environnements de calcul scientifique et de production \u00e0 haute performance. Au c\u0153ur de ce syst\u00e8me r\u00e9side une fonction pivotale, ma\u00eetresse d&rsquo;\u0153uvre de la mise en page, de l&rsquo;ergonomie visuelle et du calibrage g\u00e9om\u00e9trique : la fonction <code>par()<\/code>. Ma\u00eetriser cette fonction ne rel\u00e8ve pas d&rsquo;une simple coquetterie esth\u00e9tique, mais d&rsquo;une exigence m\u00e9thodologique fondamentale pour tout statisticien, biostatisticien ou chercheur d\u00e9sireux de produire des repr\u00e9sentations graphiques r\u00e9pondant aux standards \u00e9ditoriaux les plus rigoureux.<\/p>\n<p>Le r\u00f4le de <code>par()<\/code> transcende le simple ajustement ponctuel d&rsquo;une \u00e9tiquette ou d&rsquo;une couleur. Elle agit en tant qu&rsquo;interface directe avec la machine d&rsquo;\u00e9tat graphique sous-jacente au p\u00e9riph\u00e9rique actif dans la session R. Chaque appel modifie des registres de configuration globaux qui dictent la mani\u00e8re dont les coordonn\u00e9es de l&rsquo;espace abstrait des donn\u00e9es sont projet\u00e9es sur la surface matricielle ou vectorielle de la fen\u00eatre d&rsquo;affichage. Qu&rsquo;il s&rsquo;agisse d&rsquo;orchestrer une grille multi-panneaux complexe, d&rsquo;ajuster les marges physiques au millim\u00e8tre pr\u00e8s pour \u00e9liminer l&rsquo;espace st\u00e9rile, de contr\u00f4ler l&rsquo;orientation typographique des axes ou d&rsquo;harmoniser les polices math\u00e9matiques, <code>par()<\/code> centralise plus de soixante-dix param\u00e8tres distincts, formant un ensemble coh\u00e9rent et interd\u00e9pendant.<\/p>\n<p>Ce guide exhaustif a pour vocation d&rsquo;explorer en profondeur toutes les dimensions op\u00e9ratoires de la fonction <code>par()<\/code>. De l&rsquo;architecture interne des p\u00e9riph\u00e9riques graphiques jusqu&rsquo;\u00e0 la mise en \u0153uvre pratique d&rsquo;une planche d&rsquo;analyse psychom\u00e9trique multi-panneaux conforme aux normes strictes de publication internationale, chaque section d\u00e9taille les principes th\u00e9oriques, les m\u00e9canismes algorithmiques et les protocoles d&rsquo;impl\u00e9mentation n\u00e9cessaires pour dompter l&rsquo;environnement graphique natif de R. En appr\u00e9hendant les subtilit\u00e9s de la gestion de l&rsquo;\u00e9tat, des calculs de marges et de la superposition non destructive, le praticien s&rsquo;assure d&rsquo;une reproductibilit\u00e9 totale de ses figures, tout en \u00e9vitant les \u00e9cueils r\u00e9currents qui jonchent le d\u00e9veloppement sous le syst\u00e8me graphique de base.<\/p>\n<figure class=\"wpt-preserved-image\"><img fetchpriority=\"high\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/par1-1.png\" alt=\"par function in r\" \/><figcaption>par function in r<\/figcaption><\/figure>\n<h2>1. Introduction fondamentale \u00e0 la fonction par() dans l&rsquo;\u00e9cosyst\u00e8me R<\/h2>\n<h3>1.1 R\u00f4le et architecture de par() dans le moteur graphique de base<\/h3>\n<p>Pour appr\u00e9hender la fonction <code>par()<\/code>, il est imp\u00e9ratif de situer son action au sein du moteur graphique natif de R, souvent qualifi\u00e9 de syst\u00e8me graphique de base (ou <em>base graphics<\/em>). Contrairement aux paradigmes d\u00e9claratifs r\u00e9cents qui construisent des arbres d&rsquo;objets graphiques diff\u00e9r\u00e9s avant d&rsquo;en calculer le rendu final, le moteur de base proc\u00e8de par dessin imm\u00e9diat sur un canevas num\u00e9rique. Dans cette architecture de tra\u00e7age direct (ou <em>pipeline<\/em> imp\u00e9ratif), chaque instruction de dessin trace instantan\u00e9ment des pixels ou des primitives vectorielles sur le p\u00e9riph\u00e9rique de sortie actuellement ouvert.<\/p>\n<p>Au c\u0153ur de ce processus se trouve une machine d&rsquo;\u00e9tat graphique. Cette machine d&rsquo;\u00e9tat est g\u00e9r\u00e9e au niveau interne par le pilote du p\u00e9riph\u00e9rique graphique actif, qu&rsquo;il s&rsquo;agisse d&rsquo;un affichage interactif sur \u00e9cran (tel que <code>windows()<\/code>, <code>quartz()<\/code> ou <code>x11()<\/code>) ou d&rsquo;un fichier de sortie matriciel ou vectoriel (\u00e0 l&rsquo;instar de <code>png()<\/code>, <code>jpeg()<\/code>, <code>pdf()<\/code> ou <code>postscript()<\/code>). La fonction <code>par()<\/code>, abr\u00e9viation transparente du terme anglais <em>graphical parameters<\/em>, sert pr\u00e9cis\u00e9ment de passerelle de communication pour interroger, configurer et muter les variables internes de cette machine d&rsquo;\u00e9tat. Tout param\u00e8tre alt\u00e9r\u00e9 par le biais de cette fonction conserve son nouvel \u00e9tat pour toutes les op\u00e9rations de trac\u00e9 subs\u00e9quentes, jusqu&rsquo;\u00e0 ce qu&rsquo;une nouvelle directive intervienne ou que le p\u00e9riph\u00e9rique soit d\u00e9finitivement clos.<\/p>\n<p>L&rsquo;interaction entre l&rsquo;interpr\u00e9teur R et les pilotes graphiques implique que <code>par()<\/code> n&rsquo;agit pas au niveau de la couche d&rsquo;\u00e9valuation math\u00e9matique des donn\u00e9es, mais au niveau de l&rsquo;environnement de rendu g\u00e9om\u00e9trique. Lorsqu&rsquo;une commande graphique de haut niveau est ex\u00e9cut\u00e9e, elle consulte syst\u00e9matiquement la table des param\u00e8tres du p\u00e9riph\u00e9rique actif fix\u00e9e par <code>par()<\/code> pour d\u00e9terminer l&rsquo;\u00e9chelle relative des textes, la disposition spatiale de la zone de donn\u00e9es, l&rsquo;\u00e9paisseur des traits de contour ou encore l&rsquo;orientation des graduations. Comprendre cette m\u00e9canique s\u00e9quentielle et persistante est le pr\u00e9requis indispensable pour ma\u00eetriser la construction visuelle sans subir les effets de bord inh\u00e9rents aux syst\u00e8mes \u00e0 m\u00e9moire d&rsquo;\u00e9tat.<\/p>\n<h3>1.2 Distinction entre param\u00e8tres graphiques globaux et arguments locaux<\/h3>\n<p>L&rsquo;un des aspects les plus d\u00e9routants pour les d\u00e9veloppeurs r\u00e9side dans la fronti\u00e8re parfois t\u00e9nue entre les param\u00e8tres graphiques globaux, administr\u00e9s par <code>par()<\/code>, et les arguments locaux accept\u00e9s par les fonctions de tra\u00e7age de haut niveau comme <code>plot()<\/code>, <code>hist()<\/code>, <code>boxplot()<\/code> ou <code>barplot()<\/code>. Certains param\u00e8tres peuvent en effet \u00eatre sp\u00e9cifi\u00e9s dans les deux contextes, tandis que d&rsquo;autres sont strictement r\u00e9serv\u00e9s \u00e0 la fonction <code>par()<\/code> en raison de leur incidence sur la structure globale du canevas.<\/p>\n<p>Les r\u00e9glages appliqu\u00e9s directement comme arguments locaux au sein d&rsquo;un appel \u00e0 <code>plot()<\/code> poss\u00e8dent une port\u00e9e strictement \u00e9ph\u00e9m\u00e8re. Par exemple, si l&rsquo;on assigne une couleur sp\u00e9cifique ou un symbole particulier via les arguments locaux de pointage dans une commande de dessin, cette instruction n&rsquo;alt\u00e8re pas la configuration par d\u00e9faut du p\u00e9riph\u00e9rique pour les trac\u00e9s futurs. \u00c0 l&rsquo;inverse, l&rsquo;ex\u00e9cution pr\u00e9alable de ces m\u00eames modifications via <code>par()<\/code> red\u00e9finit le standard structurel de l&rsquo;environnement : toutes les commandes suivantes h\u00e9riteront automatiquement de ces propri\u00e9t\u00e9s tant qu&rsquo;aucune surcharge explicite ne sera formul\u00e9e. De surcro\u00eet, lors d&rsquo;un conflit direct, l&rsquo;argument local pass\u00e9 \u00e0 la fonction de haut niveau supplante temporairement le param\u00e8tre global pour l&rsquo;\u00e9l\u00e9ment graphique cibl\u00e9, sans pour autant \u00e9craser la valeur globale stock\u00e9e dans la m\u00e9moire d&rsquo;\u00e9tat du p\u00e9riph\u00e9rique.<\/p>\n<p>Il existe n\u00e9anmoins une classe fondamentale de param\u00e8tres dits exclusifs \u00e0 <code>par()<\/code>. Ces arguments architecturaux ne peuvent en aucun cas \u00eatre configur\u00e9s au sein d&rsquo;une fonction de dessin conventionnelle. C&rsquo;est notamment le cas des param\u00e8tres d&rsquo;agencement matriciel (tels que <code>mfrow<\/code> et <code>mfcol<\/code>), du dimensionnement des marges internes et externes (<code>mar<\/code>, <code>mai<\/code>, <code>oma<\/code>, <code>omi<\/code>), ou du morcellement absolu de l&rsquo;espace de tra\u00e7age (<code>fig<\/code>). Tenter de passer l&rsquo;argument <code>mar<\/code> \u00e0 l&rsquo;int\u00e9rieur de <code>plot()<\/code> d\u00e9clenche soit un avertissement d&rsquo;ignorance silencieuse, soit une erreur d&rsquo;argument inutilis\u00e9 selon la fonction appel\u00e9e. Cette distinction hi\u00e9rarchique impose une organisation rigoureuse du code : la d\u00e9finition spatiale et structurelle doit toujours pr\u00e9c\u00e9der chronologiquement l&rsquo;injection des donn\u00e9es et la g\u00e9n\u00e9ration des primitives graphiques.<\/p>\n<h3>1.3 Protocole de sauvegarde et de restauration de l&rsquo;\u00e9tat graphique initial<\/h3>\n<p>En raison de la nature persistante des modifications apport\u00e9es par <code>par()<\/code> au p\u00e9riph\u00e9rique actif, la modification non contr\u00f4l\u00e9e des param\u00e8tres graphiques constitue une source majeure de bogues silencieux et d&rsquo;incoh\u00e9rences de rendu dans les flux d&rsquo;analyses statistiques complexes. Lorsqu&rsquo;un analyste ex\u00e9cute un script modifiant les marges ou fractionnant la fen\u00eatre en une grille de plusieurs cellules, toute commande graphique ex\u00e9cut\u00e9e ult\u00e9rieurement dans la m\u00eame session R h\u00e9rite de ces contraintes, provoquant souvent des affichages distordus, des troncatures d&rsquo;\u00e9tiquettes ou des \u00e9checs de rendu inattendus.<\/p>\n<p>Pour pr\u00e9venir ces pollutions crois\u00e9es, l&rsquo;\u00e9criture d&rsquo;un code scientifique professionnel exige l&rsquo;adoption syst\u00e9matique d&rsquo;un protocole d&rsquo;idempotence graphique fond\u00e9 sur la capture et la restauration de l&rsquo;\u00e9tat initial. L&rsquo;appel de <code>par()<\/code> sans argument, ou en ciblant l&rsquo;argument <code>no.readonly = TRUE<\/code>, renvoie une liste nomm\u00e9e contenant l&rsquo;ensemble complet des valeurs courantes de la machine d&rsquo;\u00e9tat. La pr\u00e9cision <code>no.readonly = TRUE<\/code> rev\u00eat ici une importance capitale : certains param\u00e8tres internes g\u00e9r\u00e9s par le moteur graphique (comme <code>cin<\/code>, <code>cra<\/code>, <code>csi<\/code>, <code>cxy<\/code> ou <code>din<\/code>) sont prot\u00e9g\u00e9s en lecture seule et ne peuvent \u00eatre r\u00e9assign\u00e9s manuellement. Tenter de r\u00e9injecter une liste brute non filtr\u00e9e dans <code>par()<\/code> provoquerait in\u00e9vitablement des avertissements ou des interruptions d&rsquo;ex\u00e9cution.<\/p>\n<p>La syntaxe canonique employ\u00e9e dans les scripts autonomes consiste \u00e0 assigner l&rsquo;\u00e9tat initial \u00e0 un objet transitoire au d\u00e9but de la s\u00e9quence de mise en page, puis \u00e0 restaurer cet \u00e9tat \u00e0 la cl\u00f4ture du traitement graphique. Au sein d&rsquo;une fonction R personnalis\u00e9e, cette discipline est sublim\u00e9e par l&rsquo;usage judicieux du gestionnaire d&rsquo;\u00e9v\u00e9nements de sortie <code>on.exit()<\/code>. En pla\u00e7ant l&rsquo;instruction de restauration dans <code>on.exit(par(ancien_etat))<\/code> imm\u00e9diatement apr\u00e8s la sauvegarde, le d\u00e9veloppeur garantit que l&rsquo;environnement graphique recouvrera sa virginit\u00e9 originelle, y compris dans l&rsquo;\u00e9ventualit\u00e9 o\u00f9 une erreur d&rsquo;ex\u00e9cution interromprait pr\u00e9matur\u00e9ment le corps de la fonction. Cette pratique d&rsquo;encapsulation est le garant ultime de la reproductibilit\u00e9 et de la modularit\u00e9 des composants analytiques.<\/p>\n<h2>2. Organisation multi-panneaux : Ma\u00eetrise des param\u00e8tres mfrow et mfcol<\/h2>\n<h3>2.1 Structure math\u00e9matique et disposition s\u00e9quentielle par ligne avec mfrow<\/h3>\n<p>L&rsquo;une des fonctionnalit\u00e9s les plus sollicit\u00e9es de la fonction <code>par()<\/code> concerne la d\u00e9composition de l&rsquo;espace d&rsquo;affichage en une grille r\u00e9guli\u00e8re multi-panneaux afin de faciliter la comparaison visuelle directe entre plusieurs sous-ensembles de donn\u00e9es ou entre diff\u00e9rentes distributions. L&rsquo;argument <code>mfrow<\/code>, acronyme de <em>multi-frame row-wise<\/em>, mat\u00e9rialise cette ambition par le biais d&rsquo;un vecteur num\u00e9rique bidimensionnel de la forme <code>c(lignes, colonnes)<\/code>.<\/p>\n<p>D&rsquo;un point de vue architectural, l&rsquo;activation de <code>mfrow<\/code> instancie une matrice virtuelle au sein du p\u00e9riph\u00e9rique graphique. Le moteur divise la surface g\u00e9om\u00e9trique disponible en autant de rectangles \u00e9gaux que le produit des composantes du vecteur le requiert. L&rsquo;algorithme d&rsquo;ordonnancement associ\u00e9 \u00e0 <code>mfrow<\/code> ob\u00e9it \u00e0 une logique s\u00e9quentielle strictement horizontale : la premi\u00e8re fonction de trac\u00e9 invoqu\u00e9e occupe la cellule situ\u00e9e au coin sup\u00e9rieur gauche (ligne 1, colonne 1), la seconde remplit la cellule contigu\u00eb sur la m\u00eame ligne (ligne 1, colonne 2), et ainsi de suite jusqu&rsquo;\u00e0 l&rsquo;\u00e9puisement des colonnes de la premi\u00e8re rang\u00e9e. Une fois la premi\u00e8re ligne satur\u00e9e, le pointeur de dessin descend automatiquement \u00e0 la premi\u00e8re cellule de la ligne suivante (ligne 2, colonne 1).<\/p>\n<p>Cette approche par ligne refl\u00e8te le sens de lecture occidental conventionnel et s&rsquo;av\u00e8re particuli\u00e8rement ergonomique lorsqu&rsquo;il s&rsquo;agit de juxtaposer des graphiques pr\u00e9sentant des analogies th\u00e9matiques directes d&rsquo;ouest en est, ou de comparer les transformations successives d&rsquo;une m\u00eame cohorte statistique. Le calcul des proportions spatiales s&rsquo;effectue dynamiquement en redistribuant la hauteur et la largeur totales de la fen\u00eatre entre les cellules sp\u00e9cifi\u00e9es, apr\u00e8s soustraction des marges globales et individuelles. Par cons\u00e9quent, l&rsquo;augmentation du nombre d&rsquo;\u00e9l\u00e9ments matriciels r\u00e9duit proportionnellement la surface utile allou\u00e9e aux donn\u00e9es dans chaque sous-graphique, un ph\u00e9nom\u00e8ne g\u00e9om\u00e9trique dont il faut anticiper les effets sur la lisibilit\u00e9 des rep\u00e8res num\u00e9riques.<\/p>\n<h3>2.2 Alternative du remplissage s\u00e9quentiel par colonne avec mfcol<\/h3>\n<p>En miroir direct de la logique pr\u00e9c\u00e9dente, l&rsquo;argument <code>mfcol<\/code>, signifiant <em>multi-frame column-wise<\/em>, propose une modalit\u00e9 alternative de d\u00e9coupage spatial r\u00e9gulier reposant sur le parcours prioritaire des colonnes. Bien que sa signature syntaxique soit rigoureusement identique \u00e0 celle de son homologue \u2014 recevant \u00e9galement un vecteur de deux entiers d\u00e9signant le nombre de lignes et de colonnes \u2014, sa dynamique d&rsquo;it\u00e9ration interne est transpos\u00e9e \u00e0 quatre-vingt-dix degr\u00e9s.<\/p>\n<p>Lorsque le param\u00e8tre <code>mfcol = c(nr, nc)<\/code> est instanci\u00e9, le moteur graphique de R dirige le flux d&rsquo;affichage le long de l&rsquo;axe vertical. Le premier dessin se d\u00e9ploie dans le coin sup\u00e9rieur gauche, mais le deuxi\u00e8me appel trace sa figure directement sous le premier (ligne 2, colonne 1), parcourant l&rsquo;ensemble de la premi\u00e8re colonne de haut en bas avant d&rsquo;incr\u00e9menter l&rsquo;indice de colonne vers la droite pour d\u00e9buter le remplissage de la rang\u00e9e verticale adjacente (ligne 1, colonne 2). D&rsquo;un point de vue g\u00e9om\u00e9trique, l&rsquo;enveloppe globale de la figure et les dimensions unitaires des sous-cellules sont rigoureusement identiques entre <code>mfrow = c(2, 3)<\/code> et <code>mfcol = c(2, 3)<\/code> ; seul l&rsquo;ordre s\u00e9quentiel d&rsquo;attribution des graphiques est modifi\u00e9.<\/p>\n<p>Cette distinction algorithmique pr\u00e9sente des avantages analytiques consid\u00e9rables dans des contextes sp\u00e9cifiques d&rsquo;analyse de donn\u00e9es. Lors de l&rsquo;\u00e9tude de s\u00e9ries temporelles multiples ou d&rsquo;\u00e9chantillons longitudinaux n\u00e9cessitant un alignement temporel rigoureux sur l&rsquo;axe des abscisses, le parcours par colonne permet d&#8217;empiler verticalement des trac\u00e9s chronologiques partageant les m\u00eames coordonn\u00e9es temporelles. Le regard du lecteur peut alors glisser de haut en bas pour \u00e9valuer instantan\u00e9ment les synchronicit\u00e9s ou les ruptures de tendance, optimisant ainsi le flux cognitif sans l&rsquo;obliger \u00e0 des allers-retours visuels horizontaux plus propices aux comparaisons d&rsquo;amplitudes qu&rsquo;aux analyses de trajectoires synchronis\u00e9es.<\/p>\n<h3>2.3 Gestion des grilles asym\u00e9triques et des cellules graphiques vacantes<\/h3>\n<p>Un d\u00e9fi r\u00e9current lors de la mise en \u0153uvre de grilles via <code>mfrow<\/code> ou <code>mfcol<\/code> survient lorsque le nombre total de graphiques \u00e0 afficher ne correspond pas \u00e0 un multiple exact de la matrice s\u00e9lectionn\u00e9e. Par exemple, visualiser sept distributions dans une grille dimensionn\u00e9e \u00e0 huit cellules (comme une matrice <code>c(2, 4)<\/code> ou <code>c(4, 2)<\/code>) laisse in\u00e9vitablement une cellule orpheline. Par d\u00e9faut, le moteur graphique attend simplement l&rsquo;instruction suivante, ce qui peut engendrer des d\u00e9s\u00e9quilibres esth\u00e9tiques majeurs si la mise en page finale n&rsquo;est pas rigoureusement canalis\u00e9e.<\/p>\n<p>Pour orchestrer un \u00e9quilibrage visuel harmonieux ou r\u00e9server d\u00e9lib\u00e9r\u00e9ment un espace blanc destin\u00e9 \u00e0 accueillir une l\u00e9gende isol\u00e9e, un bloc textuel d&rsquo;interpr\u00e9tation ou un sch\u00e9ma conceptuel, il est possible de forcer l&rsquo;avancement du pointeur de cellule sans \u00e9mettre de donn\u00e9es au moyen de la primitive <code>plot.new()<\/code>. L&rsquo;invocation de cette fonction instancie formellement un nouveau cadre de coordonn\u00e9es, consomme la cellule active dans l&rsquo;ordre s\u00e9quentiel d\u00e9fini par <code>mfrow<\/code> ou <code>mfcol<\/code>, mais laisse l&rsquo;espace vierge de tout axe, point ou \u00e9tiquette. Le pointeur passe imm\u00e9diatement \u00e0 la cellule subs\u00e9quente, permettant de centrer artificiellement une figure impaire sur la derni\u00e8re rang\u00e9e ou d&rsquo;a\u00e9rer la composition d&rsquo;ensemble.<\/p>\n<p>Il est par ailleurs crucial d&rsquo;analyser le comportement du moteur graphique face \u00e0 la saturation de la matrice. D\u00e8s lors que l&rsquo;indice de trac\u00e9 exc\u00e8de la capacit\u00e9 maximale du produit des lignes et des colonnes, le moteur applique une purge instantan\u00e9e de la zone d&rsquo;affichage et r\u00e9initialise le pointeur au coin sup\u00e9rieur gauche d&rsquo;une nouvelle page vierge. Dans un environnement de travail interactif, cette bascule automatique provoque l&rsquo;\u00e9crasement visuel imm\u00e9diat des premi\u00e8res figures au profit des derni\u00e8res, \u00e0 moins que le p\u00e9riph\u00e9rique ne prenne en charge un historique de navigation ou que l&rsquo;utilisateur n&rsquo;ait activ\u00e9 la pagination interactive via des commandes d\u00e9di\u00e9es. En environnement d&rsquo;exportation de documents multipages, comme les p\u00e9riph\u00e9riques PDF, ce comportement garantit une transition propre vers la feuille suivante.<\/p>\n<h2>3. Configuration et contr\u00f4le pr\u00e9cis des marges internes avec mar et mai<\/h2>\n<h3>3.1 D\u00e9composition du vecteur mar et \u00e9talonnage en lignes de texte<\/h3>\n<p>L&rsquo;art de la visualisation scientifique exige une ma\u00eetrise absolue de l&rsquo;espace d&rsquo;encadrement des figures. Les marges internes d\u00e9finissent l&rsquo;\u00e9paisseur des bandes p\u00e9riph\u00e9riques qui entourent directement la zone de tra\u00e7age des donn\u00e9es pour accueillir les graduations num\u00e9riques, les libell\u00e9s descriptifs des variables et les titres de section. Dans R, l&rsquo;outil fondamental de calibration de ces marges relatives est le param\u00e8tre <code>mar<\/code>.<\/p>\n<p>Le param\u00e8tre <code>mar<\/code> attend imp\u00e9rativement un vecteur num\u00e9rique compos\u00e9 de quatre valeurs repr\u00e9sentant la largeur des marges selon un ordre cardinal standardis\u00e9, immuable dans tout le syst\u00e8me graphique : bas, gauche, haut et droite (analogue au sens horaire d\u00e9butant au sud : Sud, Ouest, Nord, Est). L&rsquo;unit\u00e9 de mesure implicite employ\u00e9e par <code>mar<\/code> est la ligne de texte standard, une grandeur relative directement conditionn\u00e9e par la taille de la police de base en vigueur sur le p\u00e9riph\u00e9rique actif. Par d\u00e9faut, R attribue \u00e0 chaque nouveau graphique le vecteur canonique <code>c(5.1, 4.1, 4.1, 2.1)<\/code>.<\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/par2.png\" alt=\"par mar function in R\" \/><figcaption>par mar function in R<\/figcaption><\/figure>\n<p>L&rsquo;analyse critique de ces valeurs par d\u00e9faut met en lumi\u00e8re leur destination : la marge inf\u00e9rieure (5.1 lignes) est dimensionn\u00e9e pour recevoir simultan\u00e9ment les valeurs d&rsquo;axes horizontaux et le libell\u00e9 de la variable d&rsquo;abscisse ; la marge gauche (4.1 lignes) accomplit le m\u00eame office pour les ordonn\u00e9es ; la marge sup\u00e9rieure (4.1 lignes) r\u00e9serve l&rsquo;espace n\u00e9cessaire \u00e0 l&rsquo;apposition d&rsquo;un titre de figure principal voire d&rsquo;un sous-titre ; enfin, la marge droite (2.1 lignes) fournit un l\u00e9ger jeu de respiration pour emp\u00eacher les valeurs extr\u00eames des axes de toucher le bord de la fen\u00eatre. Cependant, dans le cadre de compositions denses ou de grilles multi-panneaux, ce calibrage par d\u00e9faut s&rsquo;av\u00e8re particuli\u00e8rement dispendieux. En r\u00e9duisant drastiquement <code>mar<\/code> (par exemple \u00e0 des valeurs telles que <code>c(2.5, 2.5, 1.5, 0.5)<\/code>), l&rsquo;analyste maximise la surface projet\u00e9e des donn\u00e9es utiles tout en resserrant la densit\u00e9 informative du panneau.<\/p>\n<h3>3.2 Dimensionnement physique absolu des marges avec mai<\/h3>\n<p>Bien que l&rsquo;\u00e9talonnage relatif en lignes de texte offert par <code>mar<\/code> soit parfaitement adapt\u00e9 aux environnements interactifs o\u00f9 les fen\u00eatres subissent des redimensionnements fr\u00e9quents, il montre ses limites d\u00e8s lors qu&rsquo;une rigueur m\u00e9trique absolue est requise pour l&rsquo;\u00e9dition et l&rsquo;impression professionnelle. C&rsquo;est \u00e0 ce besoin de pr\u00e9cision chirurgicale que r\u00e9pond le param\u00e8tre alternatif <code>mai<\/code>.<\/p>\n<p>Le param\u00e8tre <code>mai<\/code> adopte une syntaxe structurelle strictement identique \u00e0 celle de <code>mar<\/code>, exigeant un vecteur de quatre \u00e9l\u00e9ments ordonn\u00e9s selon la m\u00eame s\u00e9quence (bas, gauche, haut, droite). Toutefois, son unit\u00e9 sous-jacente s&rsquo;exprime exclusivement en unit\u00e9s physiques imp\u00e9riales : les pouces (<em>inches<\/em>, o\u00f9 1 pouce \u00e9quivaut exactement \u00e0 25,4 millim\u00e8tres). Ce choix d&rsquo;ing\u00e9nierie conf\u00e8re \u00e0 <code>mai<\/code> une invariance dimensionnelle totale vis-\u00e0-vis des variations typographiques : que la taille de police par d\u00e9faut soit modifi\u00e9e ou non, la largeur de la bordure interne demeure physiquement ancr\u00e9e \u00e0 la valeur prescrite en pouces.<\/p>\n<p>Cette approche m\u00e9trique s&rsquo;av\u00e8re irrempla\u00e7able lors de la pr\u00e9paration de figures destin\u00e9es \u00e0 l&rsquo;insertion dans des p\u00e9riodiques scientifiques dont les instructions aux auteurs imposent des colonnes de largeur fixe (par exemple 85 mm pour une colonne simple, ou 175 mm pour une double colonne). En calculant math\u00e9matiquement le rapport entre la taille de police en points (1 point = 1\/72 de pouce) et les dimensions globales de la figure, l&rsquo;utilisation conjointe d&rsquo;un pilote vectoriel tel que <code>pdf(width, height)<\/code> et d&rsquo;un param\u00e9trage m\u00e9trique <code>mai<\/code> garantit un calibrage au microm\u00e8tre pr\u00e8s. Les marges ne risquent plus de fluctuer de mani\u00e8re impr\u00e9visible lors de la recompilation de documents, scellant ainsi l&rsquo;int\u00e9grit\u00e9 g\u00e9om\u00e9trique du document final.<\/p>\n<h3>3.3 R\u00e9solution de l&rsquo;erreur classique &lsquo;figure margins too large&rsquo;<\/h3>\n<p>Tout utilisateur r\u00e9gulier du syst\u00e8me graphique de base de R s&rsquo;est in\u00e9vitablement heurt\u00e9 \u00e0 l&rsquo;un des messages d&rsquo;erreur les plus c\u00e9l\u00e8bres de l&rsquo;interpr\u00e9teur : <code>Error in plot.new() : figure margins too large<\/code>. Cette exception syst\u00e8me n&rsquo;est pas le r\u00e9sultat d&rsquo;une corruption de donn\u00e9es ou d&rsquo;une anomalie algorithmique complexe, mais la cons\u00e9quence d&rsquo;une simple impossibilit\u00e9 g\u00e9om\u00e9trique r\u00e9solue par le moteur de rendu de R.<\/p>\n<p>Pour tracer un graphique, R proc\u00e8de par soustractions spatiales successives. Prenant acte de la dimension totale allou\u00e9e \u00e0 la fen\u00eatre ou \u00e0 la cellule active d&rsquo;une grille <code>mfrow<\/code>, le moteur soustrait les marges internes (sp\u00e9cifi\u00e9es par <code>mar<\/code> ou <code>mai<\/code>) de la hauteur et de la largeur totales disponibles. La zone r\u00e9siduelle constitue ce que la documentation technique nomme la <em>plot region<\/em> (r\u00e9gion de tra\u00e7age), au sein de laquelle les donn\u00e9es statistiques sont cartographi\u00e9es. Si la somme des marges oppos\u00e9es (par exemple, marge basse + marge haute, ou marge gauche + marge droite) \u00e9gale ou d\u00e9passe la dimension totale physique de la cellule, la surface de la r\u00e9gion de tra\u00e7age devient nulle ou n\u00e9gative. Face \u00e0 ce paradoxe spatial, le moteur interrompt l&rsquo;ex\u00e9cution et soul\u00e8ve l&rsquo;exception mentionn\u00e9e.<\/p>\n<p>La survenue de ce blocage est particuli\u00e8rement fr\u00e9quente lors de l&rsquo;activation d&rsquo;une grille matricielle dense (telle que <code>mfrow = c(3, 3)<\/code>) au sein d&rsquo;une fen\u00eatre d&rsquo;affichage \u00e9troite ou du panneau de visualisation restreint d&rsquo;un environnement de d\u00e9veloppement int\u00e9gr\u00e9. La r\u00e9solution de ce probl\u00e8me repose sur deux leviers compl\u00e9mentaires : le redimensionnement physique \u00e0 la hausse de la fen\u00eatre d&rsquo;affichage (ou l&rsquo;ajustement des param\u00e8tres <code>width<\/code> et <code>height<\/code> du p\u00e9riph\u00e9rique de sortie) et, surtout, le recalibrage m\u00e9thodique de <code>mar<\/code> vers des valeurs plus frugales. En inspectant dynamiquement la taille physique de l&rsquo;appareil via <code>par(\"din\")<\/code> ou la surface de figure avec <code>par(\"fin\")<\/code>, le d\u00e9veloppeur peut adapter algorithmiquement ses marges et \u00e9liminer d\u00e9finitivement cette rupture d&rsquo;ex\u00e9cution.<\/p>\n<h2>4. Gestion des marges ext\u00e9rieures globales avec oma et omi<\/h2>\n<h3>4.1 Architecture hi\u00e9rarchique de l&rsquo;espace graphique dans R<\/h3>\n<p>Pour appr\u00e9hender l&rsquo;agencement graphique avanc\u00e9 dans R, il est indispensable de formaliser la hi\u00e9rarchie spatiale embo\u00eet\u00e9e qui structure chaque p\u00e9riph\u00e9rique de rendu. Le moteur de base d\u00e9compose l&rsquo;espace bidimensionnel en trois r\u00e9gions concentriques fondamentales :<\/p>\n<ul>\n<li><strong>La r\u00e9gion de tra\u00e7age (<em>plot region<\/em>) :<\/strong> La zone centrale d\u00e9limit\u00e9e par les axes de coordonn\u00e9es, d\u00e9di\u00e9e exclusivement \u00e0 l&rsquo;affichage des donn\u00e9es num\u00e9riques et des primitives graphiques associ\u00e9es (points, segments, polygones).<\/li>\n<li><strong>La r\u00e9gion de figure (<em>figure region<\/em>) :<\/strong> L&rsquo;enveloppe englobant la r\u00e9gion de tra\u00e7age ainsi que ses marges internes imm\u00e9diates (g\u00e9r\u00e9es par <code>mar<\/code> ou <code>mai<\/code>), accueillant les rep\u00e8res d&rsquo;axes, les \u00e9tiquettes de variables et les annotations locales.<\/li>\n<li><strong>La r\u00e9gion ext\u00e9rieure (<em>outer margin region<\/em>) :<\/strong> L&rsquo;espace p\u00e9riph\u00e9rique global ceinturant l&rsquo;ensemble du canevas, situ\u00e9 entre les fronti\u00e8res ext\u00e9rieures des r\u00e9gions de figures et les limites physiques ultimes du p\u00e9riph\u00e9rique d&rsquo;affichage.<\/li>\n<\/ul>\n<p>Par d\u00e9faut, lors de l&rsquo;ouverture d&rsquo;un p\u00e9riph\u00e9rique vierge, la taille de la r\u00e9gion ext\u00e9rieure est fix\u00e9e \u00e0 z\u00e9ro ligne de texte sur les quatre c\u00f4t\u00e9s : <code>par(\"oma\")<\/code> renvoie <code>c(0, 0, 0, 0)<\/code>. Dans cette configuration basique, la r\u00e9gion de figure co\u00efncide parfaitement avec les bords ext\u00e9rieurs du p\u00e9riph\u00e9rique. D\u00e8s lors que l&rsquo;on configure une grille multi-panneaux via <code>mfrow<\/code> ou <code>mfcol<\/code>, chaque cellule de la grille constitue sa propre r\u00e9gion de figure ind\u00e9pendante. Les param\u00e8tres de marges ext\u00e9rieures, qu&rsquo;ils soient calibr\u00e9s en lignes de texte avec <code>oma<\/code> (<em>outer margin area<\/em>) ou en unit\u00e9s physiques avec <code>omi<\/code> (<em>outer margin in inches<\/em>), cr\u00e9ent une frange p\u00e9riph\u00e9rique globale commune qui encapsule la totalit\u00e9 des sous-graphiques au sein d&rsquo;un cadre spatial harmonis\u00e9.<\/p>\n<h3>4.2 Cr\u00e9ation de titres et d&rsquo;annotations globales unifi\u00e9es avec mtext()<\/h3>\n<p>L&rsquo;utilisation concert\u00e9e d&rsquo;une marge ext\u00e9rieure globale via <code>par(oma = ...)<\/code> et de la fonction de bas niveau <code>mtext()<\/code> (<em>margin text<\/em>) constitue la m\u00e9thode acad\u00e9mique de r\u00e9f\u00e9rence pour couronner une mosa\u00efque multi-panneaux d&rsquo;un titre g\u00e9n\u00e9ral unifi\u00e9, d&rsquo;un sous-titre contextuel ou de m\u00e9tadonn\u00e9es m\u00e9thodologiques communes. Cette approche \u00e9vite la r\u00e9p\u00e9tition visuellement lourde de titres au sommet de chaque cellule individuelle.<\/p>\n<p>La commande <code>mtext()<\/code> poss\u00e8de un argument cl\u00e9, <code>outer = TRUE<\/code>, qui modifie radicalement sa cible g\u00e9om\u00e9trique. Lorsqu&rsquo;il est assign\u00e9 \u00e0 la valeur logique vraie, le texte n&rsquo;est plus dessin\u00e9 dans la marge interne de la derni\u00e8re cellule de figure trait\u00e9e, mais directement au sein de la r\u00e9gion de marge ext\u00e9rieure globale cr\u00e9\u00e9e par <code>oma<\/code>. La position est arbitr\u00e9e par l&rsquo;argument <code>side<\/code>, reprenant la nomenclature cardinale canonique : 1 pour le bas, 2 pour la gauche, 3 pour le haut et 4 pour la droite. L&rsquo;ajustement fin de la distance entre le texte et la fronti\u00e8re de la figure s&rsquo;op\u00e8re par le param\u00e8tre <code>line<\/code>, tandis que l&rsquo;alignement typographique horizontal est gouvern\u00e9 par l&rsquo;argument <code>adj<\/code> (0 pour un alignement \u00e0 gauche, 0.5 pour un centrage parfait, et 1 pour un calage \u00e0 droite).<\/p>\n<p>Cette m\u00e9thodologie d&rsquo;annotation unifi\u00e9e pr\u00e9sente une sup\u00e9riorit\u00e9 esth\u00e9tique incontestable. En mutualisant le titre principal au sommet de la composition globale (<code>side = 3<\/code>) et en mentionnant les sources des donn\u00e9es ou les tailles d&rsquo;\u00e9chantillons en bas de page (<code>side = 1<\/code>), l&rsquo;analyste d\u00e9gage un volume substantiel d&rsquo;espace utile au sein de chaque sous-panneau. Les \u00e9l\u00e9ments textuels transversaux ne disputent plus la pr\u00e9\u00e9minence spatiale aux donn\u00e9es empiriques, garantissant une clart\u00e9 cognitive maximale pour le lecteur scientifique.<\/p>\n<h3>4.3 Alignement g\u00e9om\u00e9trique de trac\u00e9s h\u00e9t\u00e9rog\u00e8nes partageant des axes<\/h3>\n<p>Dans de nombreuses disciplines quantitatives, il est courant de vouloir juxtaposer verticalement ou horizontalement des graphiques distincts qui partagent une dimension d&rsquo;\u00e9chelle commune, tels que des enregistrements \u00e9lectrophysiologiques, des variations d&rsquo;actifs financiers synchronis\u00e9s ou des profils psychom\u00e9triques corr\u00e9l\u00e9s. L&rsquo;un des \u00e9cueils majeurs r\u00e9side dans le d\u00e9calage g\u00e9om\u00e9trique provoqu\u00e9 par la variabilit\u00e9 de la largeur des marges internes : si les nombres affich\u00e9s sur l&rsquo;axe des ordonn\u00e9es du premier panneau occupent deux caract\u00e8res (ex. 10) et ceux du second en occupent six (ex. 100 000), le moteur graphique va automatiquement repousser les axes, d\u00e9truisant l&rsquo;alignement vertical rigoureux de l&rsquo;abscisse.<\/p>\n<p>Pour \u00e9liminer ce biais d&rsquo;affichage, la strat\u00e9gie experte consiste \u00e0 fusionner la gestion de <code>oma<\/code> et de <code>mar<\/code>. En supprimant totalement les marges internes adjacentes entre les sous-graphiques (en fixant par exemple la marge inf\u00e9rieure du graphique du haut \u00e0 z\u00e9ro et la marge sup\u00e9rieure du graphique du bas \u00e0 z\u00e9ro via <code>par(mar = c(0, 4, 2, 1))<\/code> puis <code>par(mar = c(4, 4, 0, 1))<\/code>), les zones de tra\u00e7age viennent se coller physiquement bord \u00e0 bord sans solution de continuit\u00e9. L&rsquo;axe temporel ou dimensionnel partag\u00e9 peut alors \u00eatre dessin\u00e9 de fa\u00e7on unique tout en bas de la structure composite.<\/p>\n<p>L&rsquo;utilisation de <code>par(oma = ...)<\/code> permet dans cette configuration d&rsquo;encadrer l&rsquo;ensemble de la structure juxtapos\u00e9e par une marge protectrice externe assurant que les \u00e9tiquettes r\u00e9siduelles et les graduations terminales ne soient pas cisaill\u00e9es par les limites physiques de la fen\u00eatre. Il en r\u00e9sulte un graphique multi-niveaux d&rsquo;une rigueur absolue, o\u00f9 la moindre coordonn\u00e9e en abscisse correspond exactement au m\u00eame point temporel ou conceptuel d&rsquo;un panneau \u00e0 l&rsquo;autre, \u00e9liminant toute distorsion d&rsquo;\u00e9chelle susceptible d&rsquo;induire le lecteur en erreur lors d&rsquo;analyses comparatives fines.<\/p>\n<h2>5. Personnalisation typographique et \u00e9chelles d&rsquo;\u00e9chelle textuelle avec cex<\/h2>\n<h3>5.1 Fonctionnement du facteur multiplicateur global cex<\/h3>\n<p>La lisibilit\u00e9 d&rsquo;une figure d\u00e9pend intrins\u00e8quement de l&rsquo;ajustement proportionnel de ses composants typographiques et de ses symboles g\u00e9om\u00e9triques. Le param\u00e8tre <code>cex<\/code>, contraction de l&rsquo;expression anglaise <em>character expansion<\/em>, constitue le r\u00e9gulateur central de cette mise \u00e0 l&rsquo;\u00e9chelle au sein de la fonction <code>par()<\/code>. Contrairement aux approches fond\u00e9es sur des unit\u00e9s absolues en points typographiques (comme le corps 12 dans les traitements de texte), <code>cex<\/code> agit comme un facteur multiplicatif sans dimension centr\u00e9 sur l&rsquo;unit\u00e9 standard 1.0.<\/p>\n<p>Lorsqu&rsquo;une valeur de <code>cex = 1.0<\/code> est appliqu\u00e9e, le moteur graphique dessine le texte et les symboles de pointage en employant la taille de corps de base inh\u00e9rente au p\u00e9riph\u00e9rique en cours. Si l&rsquo;on assigne <code>cex = 1.5<\/code>, tous les glyphes, annotations et symboles de trac\u00e9 sont dilat\u00e9s de cinquante pour cent par rapport \u00e0 leur calibre canonique. R\u00e9ciproquement, une valeur de <code>cex = 0.8<\/code> induit une r\u00e9duction de vingt pour cent. Ce facteur scalaire d\u00e9ploie un effet de cascade : en l&rsquo;absence de sp\u00e9cifications diff\u00e9rentielles, il affecte indistinctement l&rsquo;int\u00e9gralit\u00e9 des \u00e9l\u00e9ments textuels g\u00e9n\u00e9r\u00e9s par les commandes de trac\u00e9, qu&rsquo;il s&rsquo;agisse des en-t\u00eates, des l\u00e9gendes d&rsquo;axes ou des \u00e9tiquettes individuelles.<\/p>\n<p>Il importe toutefois de manipuler ce multiplicateur global avec un discernement aiguis\u00e9. Une expansion excessive (par exemple <code>cex &gt; 2.0<\/code>) g\u00e9n\u00e8re rapidement des chevauchements d&rsquo;\u00e9tiquettes sur les axes et peut contraindre les libell\u00e9s \u00e0 d\u00e9border de la zone d\u00e9limit\u00e9e par les marges, d\u00e9clenchant des coupures inesth\u00e9tiques. \u00c0 l&rsquo;oppos\u00e9, une r\u00e9duction outranci\u00e8re (<code>cex &lt; 0.6<\/code>) franchit le seuil de rupture visuelle au-del\u00e0 duquel les caract\u00e8res deviennent indiscernables sur support imprim\u00e9 ou lors de projections sur \u00e9cran lors de s\u00e9minaires acad\u00e9miques.<\/p>\n<h3>5.2 Modulation fine des strates d&rsquo;annotation : cex.main, cex.lab, cex.axis, cex.sub<\/h3>\n<p>Pour concevoir une pi\u00e8ce graphique scientifiquement probante, la typographie doit \u00eatre hi\u00e9rarchis\u00e9e selon le statut s\u00e9mantique de chaque \u00e9l\u00e9ment textuel. Le syst\u00e8me graphique de base r\u00e9sout cette exigence en d\u00e9clinant le param\u00e8tre <code>cex<\/code> en quatre sous-param\u00e8tres sp\u00e9cialis\u00e9s, permettant un contr\u00f4le granulaire de chaque strate d&rsquo;annotation :<\/p>\n<ul>\n<li><code>cex.main<\/code> : Ajuste sp\u00e9cifiquement le facteur d&rsquo;\u00e9chelle du titre principal de la figure (fourni par l&rsquo;argument <code>main<\/code>). Il est g\u00e9n\u00e9ralement calibr\u00e9 entre 1.1 et 1.3 pour conf\u00e9rer une pro\u00e9minence imm\u00e9diate \u00e0 la th\u00e9matique abord\u00e9e sans phagocyter l&rsquo;espace allou\u00e9 aux donn\u00e9es.<\/li>\n<li><code>cex.lab<\/code> : R\u00e8gle l&rsquo;\u00e9chelle des \u00e9tiquettes d\u00e9signant les variables associ\u00e9es aux axes de coordonn\u00e9es (abscisse et ordonn\u00e9e, via <code>xlab<\/code> et <code>ylab<\/code>). Un calibrage \u00e9quilibr\u00e9 (g\u00e9n\u00e9ralement autour de 1.0 ou 1.1) garantit que les noms de variables et leurs unit\u00e9s de mesure soient imm\u00e9diatement identifiables.<\/li>\n<li><code>cex.axis<\/code> : Gouverne la taille des rep\u00e8res et \u00e9tiquettes num\u00e9riques jalonnant les graduations d&rsquo;axes. Pour \u00e9viter la congestion visuelle face \u00e0 des distributions denses, ce param\u00e8tre est fr\u00e9quemment abaiss\u00e9 \u00e0 des valeurs comprises entre 0.8 et 0.9.<\/li>\n<li><code>cex.sub<\/code> : D\u00e9termine le multiplicateur pour les sous-titres ou remarques m\u00e9thodologiques de bas de figure (pass\u00e9s par l&rsquo;argument <code>sub<\/code>), adoptant classiquement un calibre plus discret (0.75 \u00e0 0.85).<\/li>\n<\/ul>\n<p>Il est fondamental de noter que ces sous-param\u00e8tres interagissent de mani\u00e8re cumulative avec le <code>cex<\/code> global. Si <code>par(cex = 1.2)<\/code> est configur\u00e9 conjointement \u00e0 <code>par(cex.main = 1.5)<\/code>, le facteur d&rsquo;agrandissement effectif appliqu\u00e9 au titre sera de <code>1.2 \u00d7 1.5 = 1.8<\/code> fois la taille originelle de r\u00e9f\u00e9rence. Cette relation d&rsquo;\u00e9chelle multiplicative impose une planification m\u00e9thodique lors de l&rsquo;\u00e9laboration de feuilles de style graphiques pour \u00e9viter toute amplification exponentielle involontaire.<\/p>\n<h3>5.3 Pr\u00e9servation de la lisibilit\u00e9 au sein de grilles matricielles denses<\/h3>\n<p>Une caract\u00e9ristique m\u00e9connue du syst\u00e8me graphique de R r\u00e9side dans son m\u00e9canisme d&rsquo;adaptation automatique de la taille du texte lors de l&rsquo;activation des grilles matricielles. D\u00e8s lors que l&rsquo;utilisateur d\u00e9clare une grille via <code>mfrow<\/code> ou <code>mfcol<\/code> dont le nombre total de cellules exc\u00e8de deux, le moteur graphique applique silencieusement un coefficient r\u00e9ducteur interne au param\u00e8tre de base afin d&#8217;emp\u00eacher que des textes volumineux ne saturent des sous-graphiques exigus.<\/p>\n<p>Bien que cette heuristique parte d&rsquo;une intention louable, elle aboutit fr\u00e9quemment \u00e0 des rendus typographiques minuscules, particuli\u00e8rement sur des grilles de dimension <code>c(2, 2)<\/code> ou <code>c(3, 3)<\/code>, rendant les figures inexploitables pour la publication formelle. Pour neutraliser cette perte de contr\u00f4le et imposer une normalisation conforme aux crit\u00e8res des comit\u00e9s de lecture, l&rsquo;analyste doit explicitement r\u00e9ajuster <code>cex<\/code> et ses d\u00e9clinaisons au sein de son appel global \u00e0 <code>par()<\/code>.<\/p>\n<p>Une bonne pratique de d\u00e9veloppement consiste \u00e0 formuler des ratios typographiques d\u00e9pendants de la g\u00e9om\u00e9trie finale du fichier de sortie. En calculant le rapport entre la taille physique r\u00e9elle du p\u00e9riph\u00e9rique (exprim\u00e9e par exemple en pouces dans une directive <code>pdf()<\/code>) et le nombre de sous-panneaux matriciels, il devient possible d&rsquo;affecter \u00e0 <code>cex.axis<\/code> et <code>cex.lab<\/code> des valeurs compensatoires (telles que <code>cex.axis = 1.15<\/code> et <code>cex.lab = 1.25<\/code>) afin que, malgr\u00e9 la division spatiale, la hauteur d&rsquo;\u0153il des caract\u00e8res finaux imprim\u00e9s corresponde exactement \u00e0 la norme requise de 8 \u00e0 10 points typographiques.<\/p>\n<h2>6. Contr\u00f4le des palettes chromatiques et du rendu des surfaces avec col, bg et fg<\/h2>\n<h3>6.1 Configuration des couleurs structurelles avec fg et bg<\/h3>\n<p>L&rsquo;esth\u00e9tique et le contraste d&rsquo;une composition graphique d\u00e9pendent en premier lieu du traitement de ses couleurs structurelles d&rsquo;ossature. Au sein de <code>par()<\/code>, ces composantes architecturales sont principalement r\u00e9gies par les arguments <code>fg<\/code> (<em>foreground<\/em>, premier plan) et <code>bg<\/code> (<em>background<\/em>, arri\u00e8re-plan).<\/p>\n<p>Le param\u00e8tre <code>fg<\/code> contr\u00f4le la teinte globale assign\u00e9e aux \u00e9l\u00e9ments structurels primaires du graphique : les axes de coordonn\u00e9es, les tirets de graduation, la bo\u00eete d&rsquo;encadrement d\u00e9limitant la zone de tra\u00e7age et les libell\u00e9s de texte qui n&rsquo;ont pas fait l&rsquo;objet d&rsquo;une assignation chromatique locale explicite. Par d\u00e9faut, <code>fg<\/code> est verrouill\u00e9 sur la couleur noire (<code>\"black\"<\/code>). La modification de <code>fg<\/code> par une nuance plus douce, comme un gris ardoise profond (<code>\"#2b2b2b\"<\/code>), permet de r\u00e9duire le contraste structurel agressif et d&rsquo;offrir une esth\u00e9tique contemporaine tout en conservant une lisibilit\u00e9 exemplaire.<\/p>\n<p>Le param\u00e8tre <code>bg<\/code>, quant \u00e0 lui, d\u00e9termine la couleur de remplissage du fond du p\u00e9riph\u00e9rique de tra\u00e7age. Il importe toutefois de clarifier une subtilit\u00e9 technique fondamentale : lorsqu&rsquo;il est instanci\u00e9 au niveau de <code>par()<\/code>, <code>bg<\/code> repeint l&rsquo;int\u00e9gralit\u00e9 absolue du canevas d&rsquo;affichage, englobant les marges ext\u00e9rieures, les marges internes et la zone de tra\u00e7age. Si l&rsquo;objectif consiste \u00e0 appliquer une couleur de fond uniquement \u00e0 la surface int\u00e9rieure d\u00e9limit\u00e9e par les axes statistiques, il convient de ne pas muter <code>bg<\/code> globalement dans <code>par()<\/code>, mais d&rsquo;intervenir localement en utilisant la primitive <code>rect()<\/code> imm\u00e9diatement apr\u00e8s l&rsquo;initialisation du syst\u00e8me de coordonn\u00e9es, ou en recourant \u00e0 des fonctions sp\u00e9cialis\u00e9es. Pour la conception de planches graphiques destin\u00e9es \u00e0 des pr\u00e9sentations num\u00e9riques sur fond sombre, l&rsquo;orchestration concert\u00e9e d&rsquo;un <code>bg = \"#1e1e1e\"<\/code> et d&rsquo;un <code>fg = \"#e0e0e0\"<\/code> m\u00e9tamorphose instantan\u00e9ment l&rsquo;ergonomie visuelle globale.<\/p>\n<h3>6.2 Hi\u00e9rarchisation chromatique des annotations textuelles<\/h3>\n<p>De la m\u00eame mani\u00e8re que pour la modulation d&rsquo;\u00e9chelle textuelle avec <code>cex<\/code>, la fonction <code>par()<\/code> offre un contr\u00f4le chromatique diff\u00e9renci\u00e9 selon le niveau d&rsquo;annotation s\u00e9mantique par l&rsquo;entremise des param\u00e8tres <code>col.main<\/code>, <code>col.lab<\/code>, <code>col.axis<\/code> et <code>col.sub<\/code>.<\/p>\n<p>Cette sp\u00e9cialisation permet d&rsquo;orienter le parcours oculaire du lecteur selon les principes de la psychologie de la forme (<em>Gestalt<\/em>) :<\/p>\n<ul>\n<li><code>col.main<\/code> : Permet de saturer l\u00e9g\u00e8rement le titre d&rsquo;une teinte pr\u00e9dominante (par exemple un bleu marine sobre ou un noir absolu) pour fixer l&rsquo;ancrage conceptuel de la figure.<\/li>\n<li><code>col.lab<\/code> : Peut \u00eatre configur\u00e9 pour harmoniser les noms de variables avec les teintes directrices des s\u00e9ries de donn\u00e9es repr\u00e9sent\u00e9es, facilitant l&rsquo;association mentale imm\u00e9diate sans surcharge cognitive.<\/li>\n<li><code>col.axis<\/code> : Permet d&rsquo;adoucir la coloration des graduations chiffr\u00e9es en adoptant un gris neutre fonc\u00e9. Cet affaiblissement d\u00e9lib\u00e9r\u00e9 du contraste des chiffres secondaires emp\u00eache ces derniers de rivaliser visuellement avec les donn\u00e9es brutes ou les courbes d&rsquo;ajustement statistique.<\/li>\n<li><code>col.sub<\/code> : Offre la possibilit\u00e9 de rel\u00e9guer les notes m\u00e9thodologiques ou les sources bibliographiques dans un ton plus discret, marquant visuellement la hi\u00e9rarchie entre donn\u00e9es primaires et m\u00e9tadonn\u00e9es annexes.<\/li>\n<\/ul>\n<p>L&rsquo;harmonisation de ces strates chromatiques \u00e0 travers <code>par()<\/code> conf\u00e8re au rapport scientifique une coh\u00e9rence typographique professionnelle, supprimant l&rsquo;aspect h\u00e9t\u00e9roclite des graphiques par d\u00e9faut dont toutes les composantes textuelles partagent uniform\u00e9ment le m\u00eame noir satur\u00e9.<\/p>\n<h3>6.3 Accessibilit\u00e9 visuelle et conformit\u00e9 aux normes scientifiques de publication<\/h3>\n<p>L&rsquo;attribution des couleurs dans une figure de recherche ne doit jamais reposer sur de purs crit\u00e8res subjectifs ; elle ob\u00e9it \u00e0 des imp\u00e9ratifs d&rsquo;intelligibilit\u00e9 scientifique et d&rsquo;accessibilit\u00e9 universelle. Pr\u00e8s de 8 % de la population masculine et 0,5 % de la population f\u00e9minine pr\u00e9sentent des d\u00e9ficiences de la perception chromatique (daltonisme, deut\u00e9ranopie, protanopie). L&rsquo;usage de palettes fond\u00e9es sur des oppositions rouge-vert satur\u00e9es doit donc \u00eatre proscrit.<\/p>\n<p>Au sein de l&rsquo;environnement de base et dans la configuration de <code>par()<\/code>, il est hautement recommand\u00e9 d&rsquo;exploiter les palettes modernes int\u00e9gr\u00e9es nativement dans le moteur de base de R, telles que la palette <em>Viridis<\/em> ou les fonctions de gradient issues du package <code>grDevices<\/code> (comme <code>palette.colors()<\/code>). Ces palettes garantissent une progression perceptuelle uniforme et restent parfaitement lisibles lors d&rsquo;une impression en niveaux de gris standard, condition sine qua non impos\u00e9e par la majorit\u00e9 des revues internationales sous presse.<\/p>\n<p>Par ailleurs, la manipulation du canal alpha (transparence hexad\u00e9cimale \u00e0 huit caract\u00e8res, du type <code>\"#RRGGBBAA\"<\/code>) dans les param\u00e8tres chromatiques de <code>par()<\/code> ou des fonctions de trac\u00e9 associ\u00e9es s&rsquo;av\u00e8re d\u00e9terminante pour r\u00e9soudre le probl\u00e8me de chevauchement massif d&rsquo;observations statistiques (<em>overplotting<\/em>). En affectant une transparence partielle aux marqueurs ou aux intervalles de confiance, le praticien permet aux densit\u00e9s de donn\u00e9es de se r\u00e9v\u00e9ler par accumulation optique, conf\u00e9rant \u00e0 la visualisation une rigueur analytique irr\u00e9prochable.<\/p>\n<h2>7. Stylisation g\u00e9om\u00e9trique des vecteurs et des bordures : lty, lwd et bty<\/h2>\n<h3>7.1 Typologie des styles de lignes (lty) et codification num\u00e9rique ou textuelle<\/h3>\n<p>Dans la transmission d&rsquo;informations quantitatives, la ligne n&rsquo;est pas un simple s\u00e9parateur g\u00e9om\u00e9trique, mais un vecteur s\u00e9mantique majeur servant \u00e0 distinguer des trajectoires empiriques, des mod\u00e8les pr\u00e9dictifs, des asymptotes ou des intervalles critiques. Le param\u00e8tre <code>lty<\/code> (<em>line type<\/em>) constitue le levier d&rsquo;administration de ces typologies de trac\u00e9.<\/p>\n<p>R r\u00e9pertorie six styles fondamentaux de lignes standards, assignables indistinctement par une cha\u00eene de caract\u00e8res descriptive ou par son \u00e9quivalent num\u00e9rique entier :<\/p>\n<ul>\n<li><code>lty = 1<\/code> ou <code>\"solid\"<\/code> : Ligne continue standard, d\u00e9volue pr\u00e9f\u00e9rentiellement aux s\u00e9ries de donn\u00e9es observ\u00e9es ou aux cadres structurels.<\/li>\n<li><code>lty = 2<\/code> ou <code>\"dashed\"<\/code> : Ligne tiret\u00e9e, conventionnellement utilis\u00e9e pour les mod\u00e9lisations th\u00e9oriques, les r\u00e9gressions ou les estimations param\u00e9triques.<\/li>\n<li><code>lty = 3<\/code> ou <code>\"dotted\"<\/code> : Ligne en pointill\u00e9s fins, id\u00e9ale pour mat\u00e9rialiser des seuils de significativit\u00e9 statistique ou des limites de contr\u00f4le.<\/li>\n<li><code>lty = 4<\/code> ou <code>\"dotdash\"<\/code> : Ligne mixte alternant un point et un tiret.<\/li>\n<li><code>lty = 5<\/code> ou <code>\"longdash\"<\/code> : Ligne compos\u00e9e de tirets longs espac\u00e9s.<\/li>\n<li><code>lty = 6<\/code> ou <code>\"twodash\"<\/code> : Ligne alternant deux tirets courts et un tiret long.<\/li>\n<\/ul>\n<p>Au-del\u00e0 de cette taxonomie standard, <code>par(lty = ...)<\/code> rec\u00e8le un potentiel de personnalisation avanc\u00e9 via des cha\u00eenes de caract\u00e8res hexad\u00e9cimales de longueur paire (contenant entre deux et huit caract\u00e8res). Chaque paire de chiffres hexad\u00e9cimaux d\u00e9finit s\u00e9quentiellement la longueur relative de la section trac\u00e9e suivie de la section vide. Ainsi, la sp\u00e9cification <code>lty = \"44\"<\/code> produit une alternance rigoureusement \u00e9quilibr\u00e9e de 4 unit\u00e9s de trait et 4 unit\u00e9s de blanc, tandis que <code>lty = \"9323\"<\/code> g\u00e9n\u00e8re un motif complexe sur mesure, offrant une flexibilit\u00e9 absolue pour les planches cartographiques ou les dendrogrammes n\u00e9cessitant une multiplicit\u00e9 de rep\u00e8res non ambigus.<\/p>\n<h3>7.2 Calibration pr\u00e9cise de l&rsquo;\u00e9paisseur de trait avec lwd<\/h3>\n<p>La hi\u00e9rarchisation optique des primitives graphiques est intimement li\u00e9e \u00e0 la gestion de leur \u00e9paisseur physique. Le param\u00e8tre <code>lwd<\/code> (<em>line width<\/em>) pilote cette variable sous la forme d&rsquo;un multiplicateur d&rsquo;\u00e9chelle positif, prenant pour unit\u00e9 de base 1.0, ce qui \u00e9quivaut g\u00e9n\u00e9ralement \u00e0 un trait d&rsquo;une largeur de 1\/96 de pouce ou un pixel standard selon le pilote de sortie.<\/p>\n<p>L&rsquo;ajustement global de <code>lwd<\/code> via la commande <code>par(lwd = ...)<\/code> red\u00e9finit l&rsquo;\u00e9paisseur structurelle de l&rsquo;ensemble des segments, bordures de bo\u00eetes et graduations d&rsquo;axes du dessin. Une valeur de <code>lwd = 2.0<\/code> double la pr\u00e9sence mat\u00e9rielle des traits, ce qui s&rsquo;av\u00e8re particuli\u00e8rement pertinent lors de la pr\u00e9paration de figures destin\u00e9es \u00e0 \u00eatre vid\u00e9o-projet\u00e9es dans de vastes amphith\u00e9\u00e2tres ou r\u00e9duites sur des colonnes de p\u00e9riodiques imprim\u00e9s. \u00c0 l&rsquo;inverse, l&rsquo;attribution d&rsquo;\u00e9paisseurs trop massives sur des graphiques \u00e0 haute fr\u00e9quence statistique engendre une saturation des zones denses o\u00f9 les courbes se fondent en amas indiff\u00e9renci\u00e9s.<\/p>\n<p>Une vigilance particuli\u00e8re s&rsquo;impose lors de l&rsquo;exportation vers des formats vectoriels haute d\u00e9finition tels que l&rsquo;Encapsulated PostScript (EPS) ou le PDF. Dans ces environnements, la r\u00e9solution g\u00e9om\u00e9trique est virtuellement infinie, et un trait configur\u00e9 avec un <code>lwd<\/code> inf\u00e9rieur \u00e0 0.5 (<em>hairline<\/em>) peut dispara\u00eetre ou scintiller sur certains moteurs de rendu de pr\u00e9visualisation \u00e0 faible r\u00e9solution matricielle. Il est donc recommand\u00e9, en typographie scientifique de r\u00e9f\u00e9rence, de maintenir les \u00e9paisseurs d&rsquo;axes et de cadres entre 1.0 et 1.5, tout en r\u00e9servant un <code>lwd<\/code> de 2.0 \u00e0 2.5 pour les trajectoires statistiques directrices.<\/p>\n<h3>7.3 Morphologie du cadre de d\u00e9limitation de figure via l&rsquo;argument bty<\/h3>\n<p>L&rsquo;argument <code>bty<\/code> (<em>box type<\/em>) r\u00e9git la g\u00e9om\u00e9trie du cadre d\u00e9limitant la zone de tra\u00e7age. Par d\u00e9faut, le moteur graphique de base applique un encadrement rectangulaire ferm\u00e9 sur les quatre c\u00f4t\u00e9s, visualis\u00e9 sous la forme d&rsquo;un bo\u00eetier int\u00e9gral d\u00e9sign\u00e9 par la lettre mn\u00e9monique <code>bty = \"o\"<\/code> (la forme de la lettre &lsquo;o&rsquo; rappelant un cadre clos).<\/p>\n<p>Pour des raisons de sobri\u00e9t\u00e9 esth\u00e9tique ou de conformit\u00e9 avec les canons de visualisation modernes inspir\u00e9s des pr\u00e9ceptes d&rsquo;\u00e9puration graphique d&rsquo;Edward Tufte, l&rsquo;analyste peut souhaiter supprimer certaines fronti\u00e8res superflues n&rsquo;apportant aucune information statistique. Le param\u00e8tre <code>bty<\/code> offre une s\u00e9rie de variations morphologiques codifi\u00e9es par des lettres dont la silhouette rappelle le contour des bordures pr\u00e9serv\u00e9es :<\/p>\n<ul>\n<li><code>bty = \"l\"<\/code> : Pr\u00e9serve uniquement les axes inf\u00e9rieur et gauche, formant une silhouette en &lsquo;L&rsquo; id\u00e9ale pour les diagrammes de dispersion conventionnels \u00e0 deux variables positives.<\/li>\n<li><code>bty = \"7\"<\/code> : Trace uniquement les bordures sup\u00e9rieure et droite.<\/li>\n<li><code>bty = \"c\"<\/code> : Dessine un cadre en &lsquo;C&rsquo; ouvert sur la droite (bordures haute, basse et gauche).<\/li>\n<li><code>bty = \"u\"<\/code> : Trace une bo\u00eete ouverte au sommet (bordures gauche, basse et droite).<\/li>\n<li><code>bty = \"]\"<\/code> : Conserve les bordures haute, droite et basse, laissant le c\u00f4t\u00e9 gauche ouvert.<\/li>\n<li><code>bty = \"n\"<\/code> : Supprime int\u00e9gralement la bo\u00eete p\u00e9riph\u00e9rique (aucun cadre n&rsquo;est trac\u00e9).<\/li>\n<\/ul>\n<p>La modalit\u00e9 <code>bty = \"n\"<\/code> s&rsquo;av\u00e8re particuli\u00e8rement puissante lorsqu&rsquo;elle est combin\u00e9e avec la reconstruction manuelle d&rsquo;axes personnalis\u00e9s via la fonction <code>axis()<\/code>. Cette m\u00e9thode permet de concevoir des repr\u00e9sentations d&rsquo;une grande puret\u00e9 visuelle, o\u00f9 seules les lignes de rep\u00e8re indispensables subsistent, \u00e9liminant tout bruit visuel p\u00e9riph\u00e9rique qui pourrait distraire l&rsquo;attention des donn\u00e9es fondamentales.<\/p>\n<h2>8. Param\u00e9trage expert des axes et graduations : las, tck, tcl et lab<\/h2>\n<h3>8.1 Orientation spatiale des \u00e9tiquettes num\u00e9riques avec las<\/h3>\n<p>L&rsquo;un des d\u00e9fauts structurels les plus flagrants des graphiques non optimis\u00e9s r\u00e9side dans l&rsquo;orientation verticale des graduations sur l&rsquo;axe des ordonn\u00e9es. Cette disposition par d\u00e9faut contraint le lecteur \u00e0 une torsion de la nuque ou \u00e0 un effort cognitif inutile pour d\u00e9chiffrer des grandeurs num\u00e9riques. Le param\u00e8tre <code>las<\/code>, acronyme de <em>label axis style<\/em>, offre une solution ergonomique radicale en contr\u00f4lant l&rsquo;orientation spatiale de l&rsquo;ensemble des \u00e9tiquettes d&rsquo;axes.<\/p>\n<p>Le param\u00e8tre <code>las<\/code> accepte quatre valeurs enti\u00e8res strictes :<\/p>\n<ul>\n<li><code>las = 0<\/code> : Orientation par d\u00e9faut ; toutes les \u00e9tiquettes sont trac\u00e9es parall\u00e8lement \u00e0 l&rsquo;axe correspondant (horizontales en abscisse, verticales en ordonn\u00e9e).<\/li>\n<li><code>las = 1<\/code> : Orientation strictement horizontale permanente ; toutes les \u00e9tiquettes, quel que soit l&rsquo;axe consid\u00e9r\u00e9, sont dessin\u00e9es horizontalement.<\/li>\n<li><code>las = 2<\/code> : Orientation strictement perpendiculaire \u00e0 l&rsquo;axe de r\u00e9f\u00e9rence ; les \u00e9tiquettes d&rsquo;abscisse deviennent verticales et celles d&rsquo;ordonn\u00e9e deviennent horizontales.<\/li>\n<li><code>las = 3<\/code> : Orientation strictement verticale universelle pour toutes les \u00e9tiquettes.<\/li>\n<\/ul>\n<p>L&rsquo;application syst\u00e9matique de <code>par(las = 1)<\/code> constitue une recommandation ergonomique incontournable pour toute visualisation acad\u00e9mique. Elle garantit que les grandeurs num\u00e9riques de l&rsquo;axe vertical se lisent instantan\u00e9ment de gauche \u00e0 droite sans gymnastique oculaire. Toutefois, le basculement des \u00e9tiquettes d&rsquo;ordonn\u00e9e en mode horizontal \u00e9largit consid\u00e9rablement leur encombrement vers l&rsquo;ouest. Il est donc imp\u00e9ratif de coupler l&rsquo;instruction <code>las = 1<\/code> avec une augmentation proportionnelle de la marge gauche via <code>par(mar = c(5.1, 5.5, 4.1, 2.1))<\/code> pour \u00e9viter que des valeurs statistiques \u00e9tendues (par exemple des millions ou des d\u00e9cimales pr\u00e9cises) ne soient tronqu\u00e9es par le bord physique de la fen\u00eatre.<\/p>\n<h3>8.2 Morphologie et orientation des rep\u00e8res de graduation via tck et tcl<\/h3>\n<p>Les rep\u00e8res de graduation (ou <em>tick marks<\/em>) sont les petits segments qui jalonnent les axes pour mat\u00e9rialiser pr\u00e9cis\u00e9ment la position des intervalles statistiques. Le contr\u00f4le de leur longueur et de leur orientation s&rsquo;effectue au travers de deux param\u00e8tres compl\u00e9mentaires : <code>tck<\/code> et <code>tcl<\/code>.<\/p>\n<p>Le param\u00e8tre <code>tck<\/code> dimensionne la longueur des rep\u00e8res en fraction relative de la surface totale de la zone de tra\u00e7age. Une valeur positive (comme <code>tck = 0.02<\/code>) projette les tirets vers l&rsquo;int\u00e9rieur du graphique, tandis qu&rsquo;une valeur n\u00e9gative (<code>tck = -0.02<\/code>) les oriente vers l&rsquo;ext\u00e9rieur, dans la marge. L&rsquo;attribution d&rsquo;une valeur extr\u00eame <code>tck = 1<\/code> a pour cons\u00e9quence de prolonger les tirets sur l&rsquo;ensemble de la r\u00e9gion de tra\u00e7age, cr\u00e9ant automatiquement une grille orthogonale compl\u00e8te (un quadrillage de fond), bien que cette pratique soit aujourd&rsquo;hui avantageusement relay\u00e9e par la fonction d\u00e9di\u00e9e <code>grid()<\/code>.<\/p>\n<p>Le param\u00e8tre <code>tcl<\/code>, pr\u00e9f\u00e9r\u00e9 par la typographie scientifique classique, \u00e9talonne la longueur des tirets en fraction d&rsquo;une ligne de texte standard. Sa valeur par d\u00e9faut est fix\u00e9e \u00e0 <code>-0.5<\/code>, ce qui oriente les rep\u00e8res vers l&rsquo;ext\u00e9rieur de la figure sur une longueur \u00e9quivalente \u00e0 une demi-ligne de texte. En basculant sur une valeur positive telle que <code>tcl = 0.3<\/code>, le praticien dirige les graduations vers l&rsquo;int\u00e9rieur de la zone de tra\u00e7age. Cette disposition sobre et resserr\u00e9e, omnipr\u00e9sente dans les revues d&rsquo;astrophysique, de physique nucl\u00e9aire et d&rsquo;ing\u00e9nierie, permet de pr\u00e9server l&rsquo;int\u00e9grit\u00e9 visuelle des marges externes tout en offrant une pr\u00e9cision de pointage remarquable sur les axes.<\/p>\n<h3>8.3 D\u00e9termination de la densit\u00e9 d&rsquo;\u00e9chantillonnage des rep\u00e8res avec lab<\/h3>\n<p>Le calcul du nombre optimal de rep\u00e8res de graduation le long d&rsquo;une dimension continue rel\u00e8ve d&rsquo;un compromis d&rsquo;ing\u00e9nierie : trop de graduations g\u00e9n\u00e8rent une saturation optique illisible, tandis qu&rsquo;un nombre insuffisant emp\u00eache l&rsquo;estimation quantitative directe des coordonn\u00e9es. L&rsquo;argument <code>lab<\/code> de la fonction <code>par()<\/code> permet de piloter algorithmiquement cette densit\u00e9.<\/p>\n<p>L&rsquo;argument <code>lab<\/code> attend un vecteur de trois entiers de la forme <code>c(x, y, len)<\/code> :<\/p>\n<ul>\n<li><code>x<\/code> : Le nombre approximatif de graduations cibles souhait\u00e9 pour l&rsquo;axe des abscisses.<\/li>\n<li><code>y<\/code> : Le nombre approximatif de graduations cibles souhait\u00e9 pour l&rsquo;axe des ordonn\u00e9es.<\/li>\n<li><code>len<\/code> : La longueur non impl\u00e9ment\u00e9e r\u00e9serv\u00e9e aux d\u00e9veloppements futurs d&rsquo;\u00e9tiquettes sp\u00e9cialis\u00e9es (maintenue par convention standard \u00e0 7).<\/li>\n<\/ul>\n<p>Il est crucial de souligner que les valeurs <code>x<\/code> et <code>y<\/code> ne constituent pas une contrainte math\u00e9matique absolue, mais une directive indicative transmise \u00e0 l&rsquo;algorithme interne de calcul d&rsquo;intervalles \u00e9l\u00e9gants de R (impl\u00e9ment\u00e9 dans la fonction <code>pretty()<\/code>). Ce syst\u00e8me optimise l&#8217;emplacement des coupures afin qu&rsquo;elles co\u00efncident avec des multiples confortables pour l&rsquo;esprit humain (tels que 1, 2, 5, 10 ou leurs puissances d\u00e9cimales). En modulant <code>par(lab = c(10, 5, 7))<\/code>, l&rsquo;analyste peut doubler la finesse de lecture de l&rsquo;abscisse tout en \u00e9purant drastiquement les graduations de l&rsquo;ordonn\u00e9e, s&rsquo;adaptant ainsi parfaitement \u00e0 la morphologie d&rsquo;un graphique \u00e9tendu en largeur.<\/p>\n<h2>9. Dispositions spatiales avanc\u00e9es : Cartographie fine avec fig et par(new = TRUE)<\/h2>\n<h3>9.1 D\u00e9coupage millim\u00e9trique du canevas graphique par le vecteur fig<\/h3>\n<p>Si les matrices r\u00e9guli\u00e8res induites par <code>mfrow<\/code> et <code>mfcol<\/code> conviennent \u00e0 la majorit\u00e9 des explorations, elles r\u00e9v\u00e8lent leur rigidit\u00e9 d\u00e8s lors qu&rsquo;il s&rsquo;agit de construire des mises en page sophistiqu\u00e9es, asym\u00e9triques ou hi\u00e9rarchis\u00e9es. Pour surmonter ces contraintes structurelles, la fonction <code>par()<\/code> propose l&rsquo;un de ses instruments les plus puissants : le vecteur <code>fig<\/code>.<\/p>\n<p>Le param\u00e8tre <code>fig<\/code> attend un vecteur de quatre nombres r\u00e9els compris rigoureusement entre 0 et 1, sous la forme <code>c(x1, x2, y1, y2)<\/code>. Ces valeurs d\u00e9signent les coordonn\u00e9es normalis\u00e9es du canevas d\u00e9finissant les limites inf\u00e9rieures et sup\u00e9rieures, en abscisse puis en ordonn\u00e9e, de la sous-fen\u00eatre active. Ainsi, <code>fig = c(0, 0.65, 0, 1)<\/code> r\u00e9serve les 65 % occidentaux du canevas au premier trac\u00e9 sur toute sa hauteur, tandis que <code>fig = c(0.65, 1, 0, 0.5)<\/code> et <code>fig = c(0.65, 1, 0.5, 1)<\/code> fractionnent la bande orientale restante en deux modules verticaux superpos\u00e9s.<\/p>\n<p>L&rsquo;utilisation experte de <code>fig<\/code> permet notamment l&rsquo;imbrication d&rsquo;une figure miniature au sein d&rsquo;une figure parente (technique dite de l&rsquo;<em>inset plot<\/em>). Cette approche est inestimable pour pr\u00e9senter une vue d&rsquo;ensemble macroscopique tout en zoomant, \u00e0 l&rsquo;int\u00e9rieur d&rsquo;un encart d\u00e9di\u00e9 situ\u00e9 dans une zone vacante du graphique principal, sur une anomalie locale ou un sous-\u00e9chantillon critique. Lors de l&rsquo;encha\u00eenement de trac\u00e9s utilisant <code>fig<\/code>, il est imp\u00e9ratif de d\u00e9clarer le param\u00e8tre <code>new = TRUE<\/code> d\u00e8s le second appel pour emp\u00eacher la r\u00e9initialisation automatique du canevas global.<\/p>\n<h3>9.2 Technique de surimpression non destructrice avec par(new = TRUE)<\/h3>\n<p>Dans sa cin\u00e9matique d&rsquo;ex\u00e9cution standard, chaque fonction graphique de haut niveau commence par invoquer la primitive interne <code>plot.new()<\/code>, dont la vocation est d&rsquo;effacer la surface de tra\u00e7age pr\u00e9c\u00e9dente et d&rsquo;initialiser une nouvelle table de coordonn\u00e9es cart\u00e9siennes. Pour fusionner visuellement plusieurs repr\u00e9sentations au sein de la m\u00eame aire g\u00e9om\u00e9trique sans effacement pr\u00e9alable, R offre l&rsquo;instruction <code>par(new = TRUE)<\/code>.<\/p>\n<p>L&rsquo;affectation de la valeur logique vraie au param\u00e8tre <code>new<\/code> a pour effet imm\u00e9diat de duper le moteur graphique : celui-ci consid\u00e8re que la surface active est vierge et pr\u00eate \u00e0 recevoir un trac\u00e9, tout en conservant intacts les pixels ou trac\u00e9s vectoriels d\u00e9j\u00e0 d\u00e9pos\u00e9s lors des passes pr\u00e9c\u00e9dentes. Cette technique est indispensable pour superposer deux repr\u00e9sentations statistiques poss\u00e9dant des \u00e9chelles num\u00e9riques radicalement h\u00e9t\u00e9rog\u00e8nes, comme un histogramme de fr\u00e9quences absolues et une estimation de densit\u00e9 non param\u00e9trique en probabilit\u00e9 continue, ou deux s\u00e9ries temporelles corr\u00e9l\u00e9es mesur\u00e9es dans des unit\u00e9s physiques incomparables.<\/p>\n<p>La mise en \u0153uvre typique consiste \u00e0 tracer la premi\u00e8re variable avec ses axes conventionnels, \u00e0 verrouiller l&rsquo;\u00e9tat par <code>par(new = TRUE)<\/code>, puis \u00e0 ex\u00e9cuter le trac\u00e9 de la seconde variable en masquant ses axes automatiques via <code>axes = FALSE<\/code>, <code>xlab = \"\"<\/code> et <code>ylab = \"\"<\/code> pour ne pas chevaucher les rep\u00e8res d&rsquo;abscisse. L&rsquo;axe de la seconde variable est ensuite adjoint manuellement sur la fronti\u00e8re droite par <code>axis(side = 4)<\/code>. Bien que cette m\u00e9thode offre un rendu spectaculaire, la prudence \u00e9pist\u00e9mologique s&rsquo;impose : l&rsquo;usage d&rsquo;un double axe d&rsquo;ordonn\u00e9es peut induire des illusions visuelles sur la force des corr\u00e9lations si les \u00e9chelles ne sont pas explicitement ancr\u00e9es sur des bases th\u00e9oriques justifiables.<\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/par3-1.png\" alt=\"\" \/><\/figure>\n<h3>9.3 Arbitrage m\u00e9thodologique : par(mfrow) contre layout() et split.screen()<\/h3>\n<p>Face \u00e0 la diversit\u00e9 des outils d&rsquo;agencement spatial au sein de R de base, le statisticien doit op\u00e9rer des arbitrages m\u00e9thodologiques \u00e9clair\u00e9s en fonction du niveau de complexit\u00e9 de sa planche visuelle. Trois approches coexistent au sein du syst\u00e8me natif : <code>par(mfrow\/mfcol)<\/code>, la fonction <code>layout()<\/code> et l&rsquo;environnement historique <code>split.screen()<\/code>.<\/p>\n<p>Le param\u00e9trage par <code>par(mfrow)<\/code> demeure la solution reine pour toutes les grilles orthogonales homog\u00e8nes o\u00f9 chaque cellule poss\u00e8de des dimensions physiques strictement identiques. Sa syntaxe ultra-concise et sa portabilit\u00e9 sans faille en font le m\u00e9canisme le plus robuste pour les scripts d&rsquo;exploration quotidienne et les pipelines d&rsquo;automatisation rapide.<\/p>\n<p>D\u00e8s lors que la composition exige des cellules de hauteurs ou de largeurs in\u00e9gales (par exemple un panneau sup\u00e9rieur embrassant toute la largeur de deux panneaux inf\u00e9rieurs), la fonction <code>layout()<\/code> devient incontournable. Fond\u00e9e sur une matrice d&rsquo;indices entiers compl\u00e9t\u00e9e par des vecteurs de largeurs et de hauteurs relatives (<code>widths<\/code> et <code>heights<\/code>), <code>layout()<\/code> permet des agencements g\u00e9om\u00e9triques asym\u00e9triques d&rsquo;une remarquable puissance structurelle, tout en dispensant de manipuler les coordonn\u00e9es normalis\u00e9es de <code>fig<\/code>. Enfin, le syst\u00e8me <code>split.screen()<\/code>, bien que puissant pour scinder r\u00e9cursivement des r\u00e9gions graphiques ferm\u00e9es, pr\u00e9sente une dette technique historique et une fragilit\u00e9 d&rsquo;int\u00e9gration avec certains p\u00e9riph\u00e9riques modernes qui incitent \u00e0 lui pr\u00e9f\u00e9rer syst\u00e9matiquement le bin\u00f4me moderne <code>par(fig)<\/code> et <code>layout()<\/code>.<\/p>\n<h2>10. Typographie scientifique et encodage des polices avec family et font<\/h2>\n<h3>10.1 S\u00e9lection des familles de polices canoniques dans le p\u00e9riph\u00e9rique<\/h3>\n<p>L&rsquo;harmonie esth\u00e9tique d&rsquo;un article scientifique requiert une continuit\u00e9 typographique parfaite entre le corps du manuscrit textuel et les figures statistiques qui le soutiennent. L&rsquo;int\u00e9gration de polices dans le syst\u00e8me graphique de R est arbitr\u00e9e par le param\u00e8tre global <code>family<\/code> au sein de <code>par()<\/code>.<\/p>\n<p>Le moteur graphique natif garantit la reconnaissance multiplateforme de trois familles de polices vectorielles canoniques universelles, g\u00e9r\u00e9es nativement par tous les syst\u00e8mes d&rsquo;exploitation (Linux, macOS, Windows) ainsi que par les p\u00e9riph\u00e9riques de sortie PostScript et PDF :<\/p>\n<ul>\n<li><code>\"sans\"<\/code> : Famille lin\u00e9aire sans empattement (type Helvetica, Arial), hautement lisible sur les supports num\u00e9riques, les \u00e9crans et les posters scientifiques.<\/li>\n<li><code>\"serif\"<\/code> : Famille traditionnelle avec empattements (type Times New Roman, Computer Modern), recommand\u00e9e pour une int\u00e9gration \u00e9l\u00e9gante dans les th\u00e8ses et articles imprim\u00e9s sur deux colonnes.<\/li>\n<li><code>\"mono\"<\/code> : Famille \u00e0 chasse fixe ou t\u00e9l\u00e9type (type Courier), adapt\u00e9e \u00e0 la visualisation de code source, de s\u00e9quences g\u00e9nomiques ou d&rsquo;alignements tabulaires stricts.<\/li>\n<\/ul>\n<p>L&rsquo;attribution de <code>par(family = \"serif\")<\/code> avant l&rsquo;initialisation des op\u00e9rations de tra\u00e7age applique cette famille \u00e0 toutes les cha\u00eenes textuelles du canevas. Pour des usages typographiques avanc\u00e9s requ\u00e9rant des polices d&rsquo;entreprise ou des polices OpenType\/TrueType sp\u00e9cifiques, il convient d&rsquo;associer <code>par()<\/code> aux fonctionnalit\u00e9s d&rsquo;enregistrement de polices du package syst\u00e8me <code>extrafont<\/code> ou du moteur moderne <code>showtext<\/code>, assurant une vectorisation sans faille des glyphes complexes lors de la compilation finale.<\/p>\n<h3>10.2 Gestion des graisses et styles d&rsquo;\u00e9criture avec font et d\u00e9riv\u00e9s<\/h3>\n<p>La d\u00e9clinaison des graisses typographiques et des styles d&rsquo;inclinaison constitue un levier suppl\u00e9mentaire de structuration s\u00e9mantique de l&rsquo;information. Dans <code>par()<\/code>, cette modulation est prise en charge par l&rsquo;argument num\u00e9rique <code>font<\/code>, compl\u00e9t\u00e9 par ses d\u00e9clinaisons sp\u00e9cialis\u00e9es <code>font.main<\/code>, <code>font.lab<\/code>, <code>font.axis<\/code> et <code>font.sub<\/code>.<\/p>\n<p>Le codage interne repose sur une table de valeurs enti\u00e8res strictes :<\/p>\n<ul>\n<li><code>font = 1<\/code> : Style standard ou texte romain normal.<\/li>\n<li><code>font = 2<\/code> : Graisse forte ou texte en gras (<em>bold<\/em>).<\/li>\n<li><code>font = 3<\/code> : Style inclin\u00e9 ou texte en italique (<em>italic<\/em>).<\/li>\n<li><code>font = 4<\/code> : Combinaison simultan\u00e9e de graisse forte et d&rsquo;inclinaison (<em>bold italic<\/em>).<\/li>\n<li><code>font = 5<\/code> : Police de caract\u00e8res symbolique (police <em>Symbol<\/em> standard), transformant les lettres de l&rsquo;alphabet latin en glyphes grecs \u00e9quivalents et en op\u00e9rateurs math\u00e9matiques formels.<\/li>\n<\/ul>\n<p>Il est courant en mise en page acad\u00e9mique d&rsquo;attribuer une graisse marqu\u00e9e au titre principal via <code>par(font.main = 2)<\/code>, tout en maintenant les \u00e9tiquettes de variables en italique l\u00e9ger via <code>par(font.lab = 3)<\/code> afin de respecter les normes internationales de r\u00e9daction scientifique (telles que les normes ISO ou APA) qui prescrivent l&rsquo;usage syst\u00e9matique de l&rsquo;italique pour les symboles d\u00e9signant des variables statistiques math\u00e9matiques (par exemple <em>N<\/em>, <em>p<\/em>, <em>F<\/em>, ou <em>t<\/em>). Les rep\u00e8res num\u00e9riques d&rsquo;axes doivent quant \u00e0 eux imp\u00e9rativement demeurer en style romain r\u00e9gulier (<code>font.axis = 1<\/code>) pour pr\u00e9server une neutralit\u00e9 g\u00e9om\u00e9trique absolue.<\/p>\n<h3>10.3 Int\u00e9gration d&rsquo;expressions math\u00e9matiques complexes avec expression()<\/h3>\n<p>La transmission rigoureuse des analyses statistiques n\u00e9cessite fr\u00e9quemment l&rsquo;inclusion de notations math\u00e9matiques formelles au sein des l\u00e9gendes d&rsquo;axes ou des titres : lettres grecques (telles que le coefficient de r\u00e9gression standardis\u00e9 <span class=\"arabpsy-math-inline\" data-latex=\"\\beta\">$\\beta$<\/span>, la variance r\u00e9siduelle <span class=\"arabpsy-math-inline\" data-latex=\"\\sigma^2\">$\\sigma^2$<\/span> ou la moyenne th\u00e9orique <span class=\"arabpsy-math-inline\" data-latex=\"\\mu\">$\\mu$<\/span>), fractions, int\u00e9grales, racines carr\u00e9es ou indices positionnels. Dans le syst\u00e8me graphique de base, cette exigence est prise en charge par la fonction interne <code>expression()<\/code>.<\/p>\n<p>L&rsquo;interaction entre les param\u00e8tres de <code>par()<\/code> et l&rsquo;\u00e9valuation d&rsquo;une <code>expression()<\/code> est directe et symbiotique. Lorsque le moteur graphique rencontre un objet d&rsquo;expression pass\u00e9 \u00e0 <code>xlab<\/code>, <code>ylab<\/code> ou <code>main<\/code>, il suspend le traitement conventionnel des polices alphab\u00e9tiques pour mobiliser un interpr\u00e9teur typographique fond\u00e9 sur la syntaxe math\u00e9matique TeX\/LaTeX. Les grandeurs sont compos\u00e9es dynamiquement en respectant la hi\u00e9rarchie des corps : les exposants et indices adoptent automatiquement une \u00e9chelle de r\u00e9duction proportionnelle, calcul\u00e9e \u00e0 partir du <code>cex.lab<\/code> ou <code>cex.main<\/code> en vigueur dans <code>par()<\/code>.<\/p>\n<p>Pour assurer un espacement impeccable lors de la saisie d&rsquo;\u00e9quations articul\u00e9es au sein des graphiques (comme <span class=\"arabpsy-math-inline\" data-latex=\"\\bar{X} \\pm 1.96 \\cdot \\frac{\\sigma}{\\sqrt{n}}\">$\\bar{X} \\pm 1.96 \\cdot \\frac{\\sigma}{\\sqrt{n}}$<\/span>), l&rsquo;utilisation d&rsquo;op\u00e9rateurs de liaison tels que <code>*<\/code> (juxtaposition invisible sans espace) et <code>~<\/code> (insertion d&rsquo;un espace typographique cadratin) permet un fa\u00e7onnage pr\u00e9cis des formules. L&rsquo;exportation de ces glyphes math\u00e9matiques au sein de fichiers vectoriels PDF requiert une configuration rigoureuse des polices du p\u00e9riph\u00e9rique pour garantir que les courbes de B\u00e9zier des symboles grecs ne soient pas alt\u00e9r\u00e9es lors du transfert entre diff\u00e9rents syst\u00e8mes d&rsquo;exploitation.<\/p>\n<h2>11. Gestion du cycle de vie des p\u00e9riph\u00e9riques, pi\u00e8ges courants et diagnostics<\/h2>\n<h3>11.1 Persistance des param\u00e8tres et effets de contamination entre scripts<\/h3>\n<p>L&rsquo;une des causes les plus chroniques d&rsquo;anomalies de rendu observ\u00e9es chez les praticiens de R d\u00e9coule de l&rsquo;incompr\u00e9hension du cycle de vie de la machine d&rsquo;\u00e9tat graphique. Les assignations formul\u00e9es par <code>par()<\/code> ne sont ni locales au bloc d&rsquo;instructions en cours, ni \u00e9ph\u00e9m\u00e8res : elles modifient de mani\u00e8re irr\u00e9versible le registre de m\u00e9moire du p\u00e9riph\u00e9rique graphique actif pour toute la dur\u00e9e de sa session op\u00e9rationnelle.<\/p>\n<p>Cette persistance cumulative engendre un risque aigu de contamination crois\u00e9e entre scripts analytiques ind\u00e9pendants. Si un premier script divise la fen\u00eatre d&rsquo;affichage en une grille <code>c(2, 2)<\/code> et \u00e9largit les marges gauches, puis qu&rsquo;un deuxi\u00e8me script tente de produire un simple histogramme univari\u00e9 sans r\u00e9initialiser explicitement les param\u00e8tres, ce dernier sera confin\u00e9 dans la premi\u00e8re case du cadran r\u00e9siduel avec des marges distordues. Pour diagnostiquer l&rsquo;\u00e9tat instantan\u00e9 du p\u00e9riph\u00e9rique sans alt\u00e9rer sa configuration, l&rsquo;analyste peut interroger n&rsquo;importe quel param\u00e8tre unitaire en transmettant son nom sous forme de cha\u00eene de caract\u00e8res, par exemple <code>par(\"mar\")<\/code> ou <code>par(\"mfrow\")<\/code>.<\/p>\n<p>Pour purger radicalement un environnement graphique contamin\u00e9 et r\u00e9initialiser tous les param\u00e8tres \u00e0 leurs valeurs d&rsquo;usine fondamentales, la solution la plus exp\u00e9ditive consiste \u00e0 clore d\u00e9finitivement le p\u00e9riph\u00e9rique au moyen de la commande <code>dev.off()<\/code>. L&rsquo;ouverture subs\u00e9quente d&rsquo;un nouveau canevas via un appel graphique vierge ou via <code>dev.new()<\/code> instancie une machine d&rsquo;\u00e9tat totalement nettoy\u00e9e. La commande <code>graphics.off()<\/code> permet d&rsquo;\u00e9tendre ce nettoyage en fermant simultan\u00e9ment l&rsquo;ensemble de tous les p\u00e9riph\u00e9riques graphiques rest\u00e9s ouverts en arri\u00e8re-plan dans la m\u00e9moire de la session R.<\/p>\n<h3>11.2 Incompatibilit\u00e9s entre param\u00e8tres et fonctions graphiques de haut niveau<\/h3>\n<p>Bien que <code>par()<\/code> ambitionne de centraliser l&rsquo;ensemble des r\u00e9glages du syst\u00e8me graphique de base, il existe des zones de friction structurelles entre ses param\u00e8tres globaux et les impl\u00e9mentations algorithmiques de certaines fonctions sp\u00e9cialis\u00e9es de haut niveau issues du package <code>graphics<\/code> ou de biblioth\u00e8ques tierces.<\/p>\n<p>Certaines fonctions de haut niveau surchargent ou r\u00e9initialisent unilat\u00e9ralement des param\u00e8tres graphiques sans en avertir l&rsquo;utilisateur. \u00c0 titre d&rsquo;illustration, la fonction <code>layout()<\/code> \u00e9crase instantan\u00e9ment toute directive ant\u00e9rieurement formul\u00e9e par <code>par(mfrow)<\/code> ou <code>par(mfcol)<\/code>, rendant ces derni\u00e8res caduques. De mani\u00e8re sym\u00e9trique, des fonctions d&rsquo;analyse complexes int\u00e9grant leur propre logique de sous-panneaux \u2014 comme <code>pairs()<\/code> pour les matrices de dispersion bivari\u00e9es ou <code>coplot()<\/code> pour les graphiques de conditionnement \u2014 s&rsquo;approprient int\u00e9gralement l&rsquo;architecture matricielle du p\u00e9riph\u00e9rique et ignorent superbement les instructions de partitionnement externe pass\u00e9es par <code>par()<\/code>.<\/p>\n<p>De surcro\u00eet, un ph\u00e9nom\u00e8ne d&rsquo;\u00e9crasement silencieux survient lorsque des param\u00e8tres globaux de style sont en conflit avec des arguments locaux pass\u00e9s lors de l&rsquo;appel d&rsquo;une fonction de dessin. Si <code>par(col = \"blue\")<\/code> est d\u00e9fini en amont, mais que l&rsquo;instruction <code>plot(x, y, col = \"red\")<\/code> est invoqu\u00e9e, la valeur locale pr\u00e9vaut sans modifier la valeur globale de la machine d&rsquo;\u00e9tat. Identifier ces divergences impose une lecture attentive de la documentation sp\u00e9cifique de chaque fonction de haut niveau afin de discerner si celle-ci d\u00e9l\u00e8gue son rendu \u00e0 la machine d&rsquo;\u00e9tat de <code>par()<\/code> ou si elle applique une surcouche de param\u00e9trage propri\u00e9taire.<\/p>\n<h3>11.3 Bonnes pratiques de codage pour des visualisations reproductibles<\/h3>\n<p>L&rsquo;assurance d&rsquo;une reproductibilit\u00e9 totale des figures scientifiques au sein de cha\u00eenes de traitement automatis\u00e9es (telles que R Markdown, Quarto ou les serveurs d&rsquo;int\u00e9gration continue) repose sur une discipline de programmation stricte. Le non-respect de standards de d\u00e9veloppement graphique expose les flux de travail \u00e0 des ruptures de rendu impr\u00e9visibles selon les machines h\u00f4tes.<\/p>\n<p>Les trois r\u00e8gles d&rsquo;or de l&rsquo;ing\u00e9nierie graphique en base R s&rsquo;articulent ainsi :<\/p>\n<ul>\n<li><strong>Encapsulation et restauration syst\u00e9matique :<\/strong> Tout script ou fonction personnalis\u00e9e modifiant l&rsquo;environnement via <code>par()<\/code> doit imp\u00e9rativement d\u00e9buter par la capture de l&rsquo;\u00e9tat (<code>oldpar &lt;- par(no.readonly = TRUE)<\/code>) et se clore par sa restitution inconditionnelle (<code>par(oldpar)<\/code> ou via <code>on.exit()<\/code>).<\/li>\n<li><strong>D\u00e9couplage strict des dimensions du conteneur et du contenu :<\/strong> Ne jamais pr\u00e9sumer de la taille de la fen\u00eatre d&rsquo;affichage de l&rsquo;utilisateur final. Lors de la g\u00e9n\u00e9ration de figures pour publication, il est imp\u00e9ratif de d\u00e9clarer explicitement les dimensions physiques dans le pilote de sortie (par exemple <code>pdf(\"figure1.pdf\", width = 7, height = 5)<\/code>) avant de param\u00e9trer les marges avec <code>par()<\/code>.<\/li>\n<li><strong>Exclusion de l&rsquo;interactivit\u00e9 manuelle :<\/strong> Bannir les ajustements de marges op\u00e9r\u00e9s \u00e0 l&rsquo;estime en fonction du rendu obtenu sur l&rsquo;\u00e9cran d&rsquo;un ordinateur portable sp\u00e9cifique. Les calibrations de <code>mar<\/code>, <code>oma<\/code> et <code>cex<\/code> doivent \u00eatre math\u00e9matiquement proportionn\u00e9es aux r\u00e9solutions cibles pour garantir une invariance visuelle absolue, que le code soit ex\u00e9cut\u00e9 sous Linux, macOS ou Windows.<\/li>\n<\/ul>\n<h2>12. Application empirique int\u00e9gr\u00e9e : Visualisation de donn\u00e9es psychom\u00e9triques<\/h2>\n<h3>12.1 Conception d&rsquo;une planche analytique multi-panneaux pour tests cognitifs<\/h3>\n<p>Afin de synth\u00e9tiser l&rsquo;ensemble des comp\u00e9tences techniques abord\u00e9es tout au long de ce trait\u00e9, nous allons d\u00e9velopper une \u00e9tude de cas empirique concr\u00e8te. Imaginons un protocole de recherche en psychologie cognitive et diff\u00e9rentielle \u00e9valuant les performances d&rsquo;un \u00e9chantillon clinique et normatif (<span class=\"arabpsy-math-inline\" data-latex=\"N = 250\">$N = 250$<\/span>). Les participants ont \u00e9t\u00e9 soumis \u00e0 une batterie d&rsquo;\u00e9valuations comprenant un test de raisonnement fluide abstrait (score continu standardis\u00e9 sur une \u00e9chelle de 0 \u00e0 100), une \u00e9preuve de vitesse de traitement de l&rsquo;information (mesur\u00e9e en millisecondes), un inventaire d&rsquo;anxi\u00e9t\u00e9 cognitive (score continu de 10 \u00e0 50) ainsi qu&rsquo;un diagnostic typologique r\u00e9partissant les sujets en trois sous-groupes cliniques distincts.<\/p>\n<p>L&rsquo;objectif \u00e9ditorial consiste \u00e0 concevoir une planche de synth\u00e8se analytique int\u00e9gr\u00e9e sous la forme d&rsquo;une matrice \u00e0 quatre quadrants (<span class=\"arabpsy-math-inline\" data-latex=\"2 \\times 2\">$2 \\times 2$<\/span>), destin\u00e9e \u00e0 \u00eatre soumise \u00e0 une revue \u00e0 comit\u00e9 de lecture affili\u00e9e \u00e0 l&rsquo;American Psychological Association (APA). La planche doit articuler de fa\u00e7on harmonieuse quatre perspectives compl\u00e9mentaires :<\/p>\n<ul>\n<li><strong>Quadrant sup\u00e9rieur gauche (Ligne 1, Colonne 1) :<\/strong> La distribution univari\u00e9e du score de raisonnement fluide, repr\u00e9sent\u00e9e par un histogramme de densit\u00e9 surmont\u00e9 d&rsquo;un ajustement gaussien th\u00e9orique.<\/li>\n<li><strong>Quadrant sup\u00e9rieur droit (Ligne 1, Colonne 2) :<\/strong> La relation bivari\u00e9e entre le raisonnement fluide et la vitesse de traitement, visualis\u00e9e par un nuage de dispersion assorti d&rsquo;une droite d&rsquo;ajustement lin\u00e9aire et de ses intervalles de confiance.<\/li>\n<li><strong>Quadrant inf\u00e9rieur gauche (Ligne 2, Colonne 1) :<\/strong> La distribution comparative de l&rsquo;anxi\u00e9t\u00e9 cognitive selon les trois sous-groupes cliniques, mat\u00e9rialis\u00e9e par des bo\u00eetes \u00e0 moustaches \u00e9pur\u00e9es.<\/li>\n<li><strong>Quadrant inf\u00e9rieur droit (Ligne 2, Colonne 2) :<\/strong> Le profil de corr\u00e9lation multidimensionnel des variables centr\u00e9es-r\u00e9duites sous forme de diagramme en barres horizontales.<\/li>\n<\/ul>\n<p>Cette composition exige un calibrage rigoureux : les marges internes (<code>mar<\/code>) doivent \u00eatre resserr\u00e9es pour \u00e9viter tout gaspillage spatial, une marge ext\u00e9rieure globale (<code>oma<\/code>) doit ceinturer le document pour recevoir le titre unifi\u00e9 du protocole, l&rsquo;orientation de toutes les \u00e9tiquettes chiffr\u00e9es doit \u00eatre verrouill\u00e9e \u00e0 l&rsquo;horizontale (<code>las = 1<\/code>), et la typographie doit ob\u00e9ir \u00e0 la famille acad\u00e9mique avec empattements (<code>family = \"serif\"<\/code>).<\/p>\n<h3>12.2 Impl\u00e9mentation pas-\u00e0-pas du code R avec contr\u00f4le graphique exhaustif<\/h3>\n<p>L&rsquo;impl\u00e9mentation algorithmique de cette planche mobilise un script R structur\u00e9 selon les standards d&rsquo;idempotence les plus stricts. La s\u00e9quence s&rsquo;ouvre par la g\u00e9n\u00e9ration d\u00e9terministe d&rsquo;un jeu de donn\u00e9es synth\u00e9tique reproductible gr\u00e2ce \u00e0 l&rsquo;initialisation explicite du g\u00e9n\u00e9rateur de nombres pseudo-al\u00e9atoires (<code>set.seed(42)<\/code>).<\/p>\n<p>Le protocole technique se d\u00e9ploie chronologiquement de la mani\u00e8re suivante :<\/p>\n<p>En premier lieu, l&rsquo;\u00e9tat graphique initial du p\u00e9riph\u00e9rique est int\u00e9gralement sauvegard\u00e9 dans un objet d\u00e9di\u00e9 \u00e0 l&rsquo;aide de l&rsquo;argument <code>no.readonly = TRUE<\/code>. Imm\u00e9diatement apr\u00e8s cette capture conservatoire, la fonction <code>par()<\/code> est invoqu\u00e9e pour orchestrer l&rsquo;architecture globale du canevas. La grille bidimensionnelle est instanci\u00e9e par <code>mfrow = c(2, 2)<\/code>. Les marges internes individuelles sont homog\u00e9n\u00e9is\u00e9es \u00e0 une valeur \u00e9pur\u00e9e de <code>mar = c(4.2, 4.5, 2.5, 1.5)<\/code>, offrant un d\u00e9gagement parfait pour les \u00e9tiquettes sans g\u00e9n\u00e9rer d&rsquo;espace mort. Une marge ext\u00e9rieure globale est r\u00e9serv\u00e9e au sommet de la composition via <code>oma = c(1.5, 1, 3.5, 1)<\/code>. L&rsquo;orientation des graduations chiffr\u00e9es est universalis\u00e9e par <code>las = 1<\/code>, la typographie globale est orient\u00e9e vers la famille <code>family = \"serif\"<\/code>, et les rep\u00e8res de graduation sont dirig\u00e9s subtilement vers l&rsquo;int\u00e9rieur au moyen de <code>tcl = 0.25<\/code>.<\/p>\n<p>Le trac\u00e9 du premier quadrant est ensuite initialis\u00e9. L&rsquo;histogramme des scores de raisonnement fluide est mod\u00e9lis\u00e9 en densit\u00e9 relative. Les axes sont param\u00e9tr\u00e9s avec une bo\u00eete morphologique en \u00e9querre (<code>bty = \"l\"<\/code>). Une courbe de Gauss th\u00e9orique, calcul\u00e9e \u00e0 partir des param\u00e8tres de moyenne et d&rsquo;\u00e9cart-type de l&rsquo;\u00e9chantillon empirique, est superpos\u00e9e \u00e0 l&rsquo;aide de la primitive <code>lines()<\/code>, configur\u00e9e avec une ligne tiret\u00e9e (<code>lty = 2<\/code>) et une \u00e9paisseur calibr\u00e9e (<code>lwd = 2<\/code>).<\/p>\n<p>Le second quadrant prend le relais pour dresser le diagramme de dispersion reliant la vitesse de traitement au score cognitif. Les symboles de pointage sont personnalis\u00e9s pour adopter des disques pleins translucides permettant d&rsquo;appr\u00e9cier les concentrations de densit\u00e9. Le mod\u00e8le de r\u00e9gression lin\u00e9aire sous-jacent est estim\u00e9 dynamiquement via la fonction <code>lm()<\/code>, et la droite de tendance empirique est projet\u00e9e sur le nuage \u00e0 l&rsquo;aide de la primitive <code>abline()<\/code>, garantissant une identification visuelle imm\u00e9diate de la corr\u00e9lation n\u00e9gative mod\u00e9r\u00e9e reliant ces deux construits.<\/p>\n<p>Le troisi\u00e8me quadrant produit la bo\u00eete \u00e0 moustaches articulant les scores d&rsquo;anxi\u00e9t\u00e9 selon l&rsquo;appartenance typologique des participants. La fonction <code>boxplot()<\/code> h\u00e9rite directement des param\u00e8tres d&rsquo;encadrement, d&rsquo;orientation <code>las = 1<\/code> et des facteurs de mise \u00e0 l&rsquo;\u00e9chelle typographique dict\u00e9s par <code>par()<\/code>. Les contours des bo\u00eetes adoptent une \u00e9paisseur affirm\u00e9e tandis que les surfaces de dispersion interquartile sont rehauss\u00e9es d&rsquo;une nuance de gris neutre sobre.<\/p>\n<p>Le quatri\u00e8me quadrant parach\u00e8ve l&rsquo;exploration par un diagramme en barres horizontales synth\u00e9tisant les amplitudes d&rsquo;effet standardis\u00e9es des diff\u00e9rents indicateurs. Les libell\u00e9s nominatifs des variables sont positionn\u00e9s avec une lisibilit\u00e9 totale gr\u00e2ce \u00e0 l&rsquo;espace d\u00e9gag\u00e9 par la marge gauche et l&rsquo;orientation horizontale universelle.<\/p>\n<p>Enfin, la composition est couronn\u00e9e par l&rsquo;injection d&rsquo;un macro-titre institutionnel et des m\u00e9tadonn\u00e9es m\u00e9thodologiques communes. L&rsquo;appel de <code>mtext()<\/code> avec l&rsquo;argument <code>outer = TRUE<\/code> et <code>side = 3<\/code> positionne l&rsquo;en-t\u00eate de recherche au sommet de la marge globale, tandis qu&rsquo;une note m\u00e9thodologique mentionnant la taille d&rsquo;\u00e9chantillon et les intervalles de confiance est adjointe au sud (<code>side = 1<\/code>). La s\u00e9quence se termine obligatoirement par la r\u00e9injection de l&rsquo;objet d&rsquo;\u00e9tat sauvegard\u00e9 au sein de <code>par()<\/code>, restaurant l&rsquo;environnement graphique dans sa configuration vierge d&rsquo;origine.<\/p>\n<h3>12.3 Revue critique du rendu et conformit\u00e9 aux standards de publication scientifique<\/h3>\n<p>L&rsquo;\u00e9valuation qualitative de la planche analytique obtenue atteste de la sup\u00e9riorit\u00e9 op\u00e9rationnelle d&rsquo;un contr\u00f4le rigoureux exerc\u00e9 via <code>par()<\/code> par rapport aux sorties automatis\u00e9es par d\u00e9faut. La r\u00e9duction concert\u00e9e des marges internes a permis de r\u00e9allouer pr\u00e8s de 30 % de surface g\u00e9om\u00e9trique utile suppl\u00e9mentaire \u00e0 la visualisation directe des distributions empiriques.<\/p>\n<p>L&rsquo;alignement horizontal syst\u00e9matique des \u00e9tiquettes d&rsquo;axes induit par <code>las = 1<\/code> supprime toute fatigue d&rsquo;accommodation visuelle lors de la consultation des ordonn\u00e9es. De surcro\u00eet, la mutualisation du titre principal dans l&rsquo;espace p\u00e9riph\u00e9rique <code>oma<\/code> d\u00e9charge les sous-figures de la redondance d&rsquo;en-t\u00eates individuels r\u00e9p\u00e9titifs, renfor\u00e7ant le sentiment d&rsquo;unit\u00e9 conceptuelle du protocole de recherche. La bo\u00eete de d\u00e9limitation en \u00e9querre (<code>bty = \"l\"<\/code>) all\u00e8ge consid\u00e9rablement la charge graphique non informative, respectant \u00e0 la lettre les crit\u00e8res de sobri\u00e9t\u00e9 \u00e9ditoriale impos\u00e9s par les revues de rang A index\u00e9es dans les bases internationales.<\/p>\n<p>Sur le plan m\u00e9thodologique, la restauration terminale des param\u00e8tres garantit qu&rsquo;aucun artefact spatial ne viendra polluer les routines statistiques ult\u00e9rieures de l&rsquo;analyste. Cette d\u00e9marche illustre comment l&rsquo;alliance de la rigueur math\u00e9matique et de l&rsquo;ing\u00e9nierie graphique transforme le moteur de base de R en un instrument de pr\u00e9cision documentaire capable de satisfaire aux exigences acad\u00e9miques les plus intransigeantes.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<p>Becker, R. A., Chambers, J. M., &amp; Wilks, A. R. (1988). <em>The new S language: A programming environment for data analysis and graphics<\/em>. Wadsworth &amp; Brooks\/Cole. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1201\/9781351074988\">https:\/\/doi.org\/10.1201\/9781351074988<\/a><\/p>\n<p>Cleveland, W. S. (1993). <em>Visualizing data<\/em>. Hobart Press.<\/p>\n<p>Murrell, P. (2018). <em>R graphics<\/em> (3e \u00e9d.). Chapman and Hall\/CRC. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1201\/9780429490408\">https:\/\/doi.org\/10.1201\/9780429490408<\/a><\/p>\n<p>R Core Team. (2023). <em>R: A language and environment for statistical computing<\/em>. R Foundation for Statistical Computing. <a rel=\"noopener noreferrer\" href=\"https:\/\/www.R-project.org\/\">https:\/\/www.R-project.org\/<\/a><\/p>\n<p>Tufte, E. R. (2001). <em>The visual display of quantitative information<\/em> (2e \u00e9d.). Graphics Press.<\/p>\n<p>Wickham, H. (2016). <em>ggplot2: Elegant graphics for data analysis<\/em> (2e \u00e9d.). Springer-Verlag. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1007\/978-3-319-24277-4\">https:\/\/doi.org\/10.1007\/978-3-319-24277-4<\/a><\/p>\n<p>Wilkinson, L. (2005). <em>The grammar of graphics<\/em> (2e \u00e9d.). Springer-Verlag. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1007\/0-387-28695-0\">https:\/\/doi.org\/10.1007\/0-387-28695-0<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Guide acad\u00e9mique approfondi sur la fonction par() dans R : ma\u00eetrise des dispositions multi-graphiques, ajustement des marges, typographie et param\u00e8tres visuels.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[2193,2687],"tags":[4593,4594,4596,4595,3154],"class_list":["post-2489","psych_stat","type-psych_stat","status-publish","hentry","category-programmation-r","category-visualisation-de-donnees","tag-fonction-par-r","tag-graphiques-r-de-base","tag-marges-graphiques-r","tag-mfrow-r","tag-visualisation-scientifique"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/2489","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=2489"}],"version-history":[{"count":1,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/2489\/revisions"}],"predecessor-version":[{"id":16373,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/2489\/revisions\/16373"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2489"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2489"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2489"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}