Dans le domaine de l’analyse empirique et de l’économétrie appliquée, la représentation visuelle des données constitue une étape fondamentale, souvent préalable et complémentaire à toute modélisation stochastique formalisée. Le nuage de points, désigné sous le vocable anglo-saxon de scatterplot, s’impose comme l’archétype par excellence de la visualisation bivariée. En projetant des observations au sein d’un plan cartésien orthogonal défini par deux variables quantitatives continues, ce graphique offre au chercheur une appréhension intuitive et immédiate de la structure sous-jacente des données. Loin d’être un simple artefact esthétique, il constitue un instrument heuristique puissant, capable de révéler des régularités empiriques, des discontinuités structurelles ou des déviations pathologiques que les indicateurs statistiques synthétiques tendent fréquemment à masquer.
Le logiciel statistique Stata s’est établi comme un standard de référence au sein de la communauté scientifique, particulièrement en économie, en sociologie quantitative, en épidémiologie et en sciences politiques. Son moteur graphique, articulé autour de l’architecture flexible de la commande twoway, permet une personnalisation d’une rare précision typographique et analytique. Toutefois, la maîtrise exhaustive de cet environnement requiert une compréhension fine de sa logique sous-jacente : articulation modulaire des calques, paramétrage algorithmique des lissages non paramétriques, contrôle métrique des axes de coordonnées et optimisation du ratio d’encre selon les principes d’Edward Tufte. L’analyste novice comme le chercheur confirmé se trouvent confrontés à la nécessité d’orchestrer ces fonctionnalités pour convertir des microdonnées brutes en représentations graphiques répondant aux exigences éditoriales des revues scientifiques les plus rigoureuses.
Ce traité exhaustif a pour vocation d’explorer l’ensemble des dimensions techniques, méthodologiques et esthétiques présidant à la création et à la modification avancée des nuages de points dans l’environnement Stata. En partant des prolégomènes épistémologiques de la visualisation statistique pour aboutir aux procédures d’automatisation vectorielle haute résolution, ce guide examine en détail chaque commande, option et nuance d’implémentation. À travers des formulations théoriques solides, des illustrations concrètes fondées sur des bases de données de référence et des recommandations pratiques éprouvées, le praticien acquerra une autonomie méthodologique absolue pour concevoir des visualisations graphiques à la fois impeccables sur le plan statistique et d’une remarquable élégance visuelle.
- 1. Fondements théoriques et pertinence du nuage de points dans Stata
- 2. Chargement et inspection préliminaire des jeux de données
- 3. Syntaxe fondamentale de la commande scatter
- 4. Superposition de modèles de régression linéaire
- 5. Modélisation non linéaire et lissage non paramétrique
- 6. Personnalisation avancée des marqueurs de données
- 7. Configuration rigoureuse des axes de coordonnées
- 8. Titrage académique, légendes et annotations documentaires
- 9. Identification, labellisation et diagnostic des observations
- 10. Stratification, partitionnement et graphiques en trellis
- 11. Matrices de nuages de points pour l’analyse multivariée
- 12. Thèmes visuels, automatisation et exportation haute résolution
- Références
1. Fondements théoriques et pertinence du nuage de points dans Stata
1.1 Rôle épistémologique du scatterplot en analyse bivariée
Le recours au nuage de points s’inscrit dans une tradition épistémologique inaugurée par les pionniers de la statistique graphique, notamment Francis Galton et John Tukey, père de l’analyse exploratoire des données (Exploratory Data Analysis). La fonction première du scatterplot réside dans la désoccultation des relations bivariées. Lorsqu’un chercheur manipule un ensemble d’observations jumelées, la réduction de l’information à un simple scalaire — tel que le coefficient de corrélation linéaire de Pearson — peut induire des biais interprétatifs majeurs. Le célèbre quartette d’Anscombe illustre magnifiquement cette aporie : quatre jeux de données distincts, partageant des moyennes, des variances et des coefficients de corrélation strictement identiques, présentent en réalité des configurations spatiales radicalement hétérogènes, oscillant entre linéarité parfaite, courbure quadratique marquée et contamination par des points aberrants isolés.
Dès lors, le nuage de points agit comme un crible diagnostique initial. Il permet d’évaluer de visu la linéarité présumée de la relation statistique unissant deux phénomènes mesurables. Cette appréciation est capitale dans la mesure où le modèle de régression linéaire classique repose sur l’hypothèse de linéarité des paramètres. Au-delà de cette trajectoire centrale, le scatterplot dévoile la présence ou l’absence de monotonicité, c’est-à-dire la tendance systématique d’une variable à croître ou décroître conjointement avec l’autre, indépendamment de la forme exacte de la trajectoire fonctionnelle.
Un autre apport heuristique fondamental concerne l’identification de l’hétéroscédasticité. En examinant l’éventail de dispersion verticale des points le long de l’axe des abscisses, le chercheur observe directement si la variance de l’aléa dépend de la magnitude de la variable explicative. Une structure conique, s’évasant ou se rétrécissant le long de l’abscisse, signale immédiatement une violation de l’hypothèse d’homoscédasticité, avertissant l’économètre de la caducité potentielle des écarts-types calculés par les moindres carrés ordinaires sans correction robuste de type Huber-White. Enfin, dans les disciplines empiriques telles que la psychométrie et les sciences du comportement, le nuage de points autorise l’examen visuel des effets de plancher ou de plafond induits par les instruments de mesure psychologiques, révélant ainsi les contraintes de distribution inhérentes aux protocoles expérimentaux.
1.2 Compréhension des conventions graphiques dans l’environnement Stata
L’architecture graphique de Stata a été profondément refondue à partir de la version 8 pour adopter un modèle orienté objet et modulaire, structuré principalement autour de la famille d’instructions graph twoway. Cette conception repose sur le principe de la superposition stratifiée : un graphique final est conceptualisé comme une pile de couches transparentes indépendantes, projetées sur un repère cartésien partagé. Dans cet agencement, l’instruction scatter constitue à la fois un composant autonome et une brique élémentaire combinable avec d’autres sous-commandes de la galaxie twoway (telles que lfit, qfit, ou line).
Une convention immuable dans l’environnement Stata régit la syntaxe spatiale : l’affectation positionnelle des variables exige rigoureusement que la première variable mentionnée après l’instruction désigne l’ordonnée (axe vertical Y), tandis que la seconde variable correspond à l’abscisse (axe horizontal X). Cette attribution obéit à la modélisation mathématique conventionnelle où Y représente la variable dépendante ou expliquée, fonction de la variable indépendante explicative X. L’interversion accidentelle de ces deux éléments fausse instantanément la perspective heuristique du graphique.
La gestion sous-jacente des données numériques par le moteur graphique mérite une attention spécifique. Stata traite les valeurs manquantes, codées par le symbole point, d’une manière qui préserve l’intégrité de la géométrie vectorielle : toute observation présentant une valeur manquante sur l’axe Y, sur l’axe X, ou sur les deux, est systématiquement exclue du tracé cartésien sans interrompre l’exécution du programme. En revanche, le formatage interne des variables (décimales, dates, affichage monétaire) assigné au niveau de la table de données se répercute par défaut sur la graduation des axes, à moins d’une surcharge explicite via les options dédiées. La programmation modulaire via la ligne de commande Stata permet d’enchaîner ces manipulations avec une rigueur déterministe, garantissant la reproductibilité intégrale du flux de travail scientifique.
2. Chargement et inspection préliminaire des jeux de données
2.1 Importation et initialisation des données de travail
Avant d’instancier la moindre commande graphique, le protocole de recherche impose un examen scrupuleux de l’espace de données chargé en mémoire vive. Stata propose une série de bases de données internes idéales pour l’étalonnage des procédures. La plus célèbre d’entre elles demeure le fichier des caractéristiques automobiles de 1978, accessible universellement via l’instruction sysuse auto, clear. Ce jeu de données, riche de soixante-quatorze observations et de douze variables hétérogènes, offre un laboratoire d’expérimentation parfait pour illustrer les relations bivariées, à l’instar de la relation non linéaire entre le poids des véhicules et leur consommation de carburant.
L’inspection structurelle débute invariablement par l’exécution de la commande describe. Cet outil d’audit récapitule la nature des types de stockage (entiers, réels à virgule flottante, chaînes de caractères alphanumériques) ainsi que les étiquettes de variables associées. Il est impératif de s’assurer que les variables destinées à être projetées sur les axes orthogonaux possèdent un format strictement numérique. Une variable codée en chaîne de caractères, même si elle ne contient visuellement que des chiffres, générera une erreur bloquante lors de la tentative de traçage. Le cas échéant, le chercheur devra convertir ces vecteurs au moyen des fonctions destring ou encode avant de poursuivre.
La phase d’initialisation requiert également la purge des observations corrompues ou hors champ méthodologique. Par le biais d’instructions conditionnelles de filtrage ou de recodage explicite via drop ou recode, l’espace mémoire est purifié de tout artéfact susceptible de distordre l’échelle du repère. La validation de la structure de l’échantillon permet d’aborder la phase d’exploration statistique descriptive dans des conditions de rigueur méthodologique optimales.
2.2 Exploration statistique descriptive avant visualisation
L’application d’un principe de saine hygiène analytique consiste à ne jamais tracer un graphique sans avoir au préalable appréhendé les moments statistiques élémentaires des séries en présence. La commande summarize, assortie éventuellement de l’option detail, délivre les paramètres fondamentaux de la tendance centrale et de la dispersion : la moyenne arithmétique, l’écart-type, ainsi que les quantiles cruciaux, notamment la médiane et les percentiles extrêmes (premier et quatre-vingt-dix-neuvième percentiles).

Cet examen préliminaire des distributions marginales vise à anticiper la morphologie globale du nuage de points. Si une variable présente une asymétrie positive prononcée, caractérisée par une moyenne nettement supérieure à la médiane et un écart écrasant entre le soixante-quinzième percentile et le maximum, la projection brute générera inévitablement un écrasement d’une multitude de points dans le coin inférieur du graphique, tandis que quelques points atypiques étireront l’axe de manière disproportionnée. L’anticipation de ce comportement guide l’analyste vers des choix d’échelles appropriés, tels que des dilatations locales ou des transformations fonctionnelles.
Parallèlement, la quantification du degré d’association linéaire via la commande correlate ou non paramétrique via spearman offre un repère numérique direct. Obtenir un coefficient de corrélation de Pearson de -0.87 entre le poids et le rendement kilométrique fournit une cible mentale pour vérifier la congruence du tracé visuel. Enfin, le chercheur documentera minutieusement les unités de mesure sous-jacentes (par exemple, les livres pour la masse et les miles par gallon pour la consommation), assurant ainsi que l’étiquetage ultérieur du graphique transmettra une information intelligible dénuée de toute ambiguïté sémiotique.
3. Syntaxe fondamentale de la commande scatter
3.1 Génération d’un nuage de points élémentaire
La création de la forme graphique la plus élémentaire s’effectue au moyen d’une déclaration syntaxique d’une concision exemplaire : scatter variable_y variable_x. Par cette instruction, le compilateur graphique de Stata sollicite le sous-système de rendu vectoriel, calcule l’amplitude des séries désignées, dimensionne automatiquement les bornes inférieure et supérieure des axes pour englober l’ensemble des coordonnées observables, puis projette les points dans une nouvelle fenêtre modale intitulée Graph Window.

D’un point de vue fonctionnel, il importe de clarifier la dichotomie entre la commande directe scatter y x et son équivalent modulaire formalisé sous la dénomination twoway scatter y x ou twoway (scatter y x). Si la première forme constitue un raccourci syntaxique fort commode lors d’une session exploratoire interactive, la forme enveloppée par le préfixe twoway représente la pierre angulaire de l’écosystème graphique de Stata. Ce préfixe notifie au parseur que le nuage de points s’inscrit au sein d’un graphe composite susceptible de recevoir des calques supplémentaires superposés.
Dès l’affichage du rendu graphique initial, l’analyste se trouve en mesure d’opérer une première lecture substantielle. L’inclinaison de la nébuleuse de points indique immédiatement le sens de la relation statistique : une orientation descendante, s’étendant du quadrant supérieur gauche vers le quadrant inférieur droit, témoigne d’une covariation négative, comme celle liant le poids d’un véhicule à son autonomie énergétique. L’épaisseur et la compacité de la distribution autour d’une trajectoire imaginaire renseignent quant à elles sur l’intensité du lien. Toutefois, à ce stade élémentaire, les options graphiques par défaut — bien que fonctionnelles — laissent subsister une marge d’optimisation substantielle pour hisser le document aux canons de l’édition scientifique.
3.2 Filtrage et conditionnement des observations tracées
En pratique empirique, l’analyse porte fréquemment sur des sous-populations spécifiques ou nécessite l’exclusion d’observations particulières en raison de contraintes théoriques. Le langage Stata intègre cette exigence avec une flexibilité remarquable grâce à l’adjonction de la clause conditionnelle if. L’analyste peut ainsi restreindre la modélisation visuelle aux seules unités d’observation remplissant un ensemble de critères booléens définis : scatter mpg weight if foreign == 1 isole par exemple les véhicules de fabrication étrangère, excluant ipso facto la cohorte nationale.
Les connecteurs logiques standards peuvent être mobilisés pour construire des filtres d’une complexité arbitraire. L’opérateur de conjonction & et l’opérateur de disjonction | permettent de délimiter avec une précision chirurgicale les sous-échantillons d’intérêt :
- scatter mpg weight if foreign == 0 & price < 10000 : isole les véhicules nationaux dont le prix n’excède pas dix mille dollars.
- scatter mpg weight if price >= 5000 & price <= 12000 : circonscrit le tracé à une tranche tarifaire médiane rigoureusement délimitée.
- scatter mpg weight if !missing(rep78) : écarte toute observation comportant une valeur manquante sur la variable qualitative de réparation.
Outre la clause if, l’analyste dispose de la clause in, laquelle permet d’ordonner le traçage sur une plage indiciaire définie selon l’ordonnancement séquentiel des observations dans la matrice de données. L’instruction scatter mpg weight in 1/50 ne projettera ainsi que les cinquante premières lignes du jeu de données actif. L’usage conjoint ou exclusif de ces clauses modifie directement les marges d’échelle : Stata recalcule automatiquement les limites des axes en fonction des seules données effectivement sélectionnées, ce qui évite la création d’espaces vides superflus et préserve la granularité de la visualisation.
4. Superposition de modèles de régression linéaire
4.1 Ajout d’une droite d’ajustement linéaire classique
La mise en relation visuelle d’un nuage de points avec une trajectoire paramétrique de tendance constitue l’une des démarches les plus courantes de la modélisation statistique. Dans l’écosystème Stata, cette synthèse s’opère par la superposition du tracé scatter et de l’instruction lfit (linear fit). L’articulation s’effectue grâce à la syntaxe multi-calques encadrée par des parenthèses distinctes : twoway (scatter mpg weight) (lfit mpg weight). Les doubles barres obliques verticales || peuvent également servir de séparateur de couches fonctionnelles.

Sur le plan calculatoire, la sous-commande lfit exécute en arrière-plan une régression des moindres carrés ordinaires en projetant la variable Y sur la variable X. Elle extrait les coefficients de régression estimés — la constante et la pente — et trace le segment de droite reliant les prédictions calculées aux deux extrémités du domaine empirique de la variable X. Cette droite matérialise l’espérance conditionnelle linéaire E(Y|X). Elle permet d’apprécier la pertinence de l’approximation linéaire : si les points oscillent de manière symétrique et homogène de part et d’autre du segment, l’hypothèse linéaire conserve sa validité ; si au contraire une déviation structurelle courbée apparaît, le chercheur devra récuser le modèle linéaire au profit de formes plus flexibles.
La personnalisation de cette droite de régression s’avère indispensable pour garantir son détachement visuel par rapport à la dispersion des points. Au moyen des options appliquées spécifiquement au calque lfit, il est loisible de moduler l’épaisseur du trait via lwidth() (options telles que medium, thick, vthick), son motif via lpattern() (comme dash pour des tirets, dot pour des pointillés, ou solid pour un trait continu), et sa nuance chromatique via lcolor() (par exemple navy, cranberry ou des valeurs RGB personnalisées). L’instruction se structure ainsi : twoway (scatter mpg weight) (lfit mpg weight, lcolor(crimson) lwidth(thick) lpattern(dash)).
4.2 Intégration des intervalles de confiance de la prédiction
Toute modélisation inférentielle rigoureuse impose la prise en compte explicite de l’incertitude d’échantillonnage. Dans cette perspective, la commande lfitci (linear fit with confidence interval) enrichit la droite des moindres carrés ordinaires en superposant une enveloppe d’estimation correspondant à l’intervalle de confiance de la moyenne conditionnelle prédite. L’instruction s’exécute selon le schéma syntaxique : twoway (lfitci mpg weight) (scatter mpg weight).
L’agencement des couches revêt ici une importance capitale. Le moteur graphique de Stata procédant par empilement séquentiel ascendant, l’analyste avisé placera le calque lfitci en premier lieu, suivi du calque scatter. Cette hiérarchie prévient le masquage intempestif des marqueurs de données par la zone d’ombrage de l’intervalle de confiance. La configuration du seuil d’incertitude probabiliste s’opère par l’option level(), permettant d’ajuster le niveau de confiance nominal (par exemple level(99) pour une certitude statistique à 99 % ou level(90) pour un cadre d’exploration plus resserré).
L’apparence de la zone polygonale représentant l’intervalle d’incertitude peut être raffinée au moyen des options de remplissage fcolor() (fill color) et de bordure alcolor() (area line color). Afin d’éviter une opacité excessive qui masquerait les variations locales, Stata permet de définir une saturation chromatique atténuée ou d’employer des motifs hachurés via l’option fintensity(). Il est ainsi possible d’écrire : twoway (lfitci mpg weight, level(95) fcolor(gs14%50) alcolor(gs10)) (scatter mpg weight, mcolor(navy%70)), réalisant ainsi une intégration esthétique et scientifique conforme aux normes éditoriales les plus strictes.
5. Modélisation non linéaire et lissage non paramétrique
5.1 Ajustement polynomial et quadratique avec qfit
Lorsque la structure empirique met en relief une courbure notable — par exemple des rendements marginaux décroissants ou des seuils d’inversion fonctionnelle —, l’imposition d’un ajustement linéaire constitue un contresens théorique majeur. Stata pallie cette déficience par l’intégration native de la commande qfit (quadratic fit), laquelle implémente une régression polynomiale de degré deux, intégrant simultanément un terme linéaire et un terme quadratique sous la forme E(Y|X) = β0 + β1X + β2X2.
La commande s’invoque de manière analogue à son homologue linéaire : twoway (scatter mpg weight) (qfit mpg weight). Tout comme pour la droite des moindres carrés, Stata offre la déclinaison qfitci qui associe au profil quadratique une zone d’estimation probabiliste curviligne. Cette enveloppe se dilate typiquement aux confins de la distribution marginale de la variable X, reflétant l’accroissement de la variance d’estimation lié à la raréfaction des observations aux bornes de l’espace empirique.
La comparaison graphique directe entre la droite linéaire et la parabole quadratique s’avère extrêmement probante sur le plan didactique et analytique. En écrivant twoway (scatter mpg weight, msize(small) mcolor(gs8)) (lfit mpg weight, lcolor(red) lpattern(dash)) (qfit mpg weight, lcolor(blue) lwidth(thick)), le chercheur offre à son auditoire une appréciation immédiate du gain d’ajustement apporté par la modélisation quadratique. Toutefois, la prudence méthodologique s’impose face aux extrapolations hasardeuses aux extrêmes : le comportement asymptotique d’un polynôme de second degré peut induire des inversions de tendance artificielles non corroborées par les données sous-jacentes.
5.2 Lissage localement pondéré avec les méthodes lowess et lpoly
Pour s’affranchir entièrement des hypothèses fonctionnelles rigides imposées par les modèles paramétriques, l’économétrie moderne privilégie fréquemment les approches non paramétriques. La technique du lissage localement pondéré par régression robuste, universalisée sous l’acronyme LOWESS (Locally Weighted Scatterplot Smoothing), est accessible dans Stata via la commande lowess ou le calque twoway lowess.
L’algorithme Lowess opère une série de régressions linéaires locales pondérées autour de chaque point focal de l’abscisse. Le poids accordé à chaque observation périphérique décroît en fonction de sa distance euclidienne par rapport au point cible, selon une fonction de noyau tricube. Le paramètre fondamental gouvernant cette procédure est la largeur de fenêtre (bandwidth), contrôlable par l’option bwidth(valeur), où la valeur s’échelonne conventionnellement entre 0.1 et 0.9. Une bande passante étroite capture des micro-variations locales mais court le risque du surapprentissage statistique en amplifiant le bruit stochastique ; à l’inverse, une bande passante excessive engendre un biais de lissage important, écrasant les véritables singularités structurelles.
En complément de Lowess, Stata propose l’instruction de lissage par régression polynomiale locale à noyau, désignée par twoway lpoly. Cette méthode offre une assise théorique supérieure en permettant le choix explicite de la fonction de pondération via l’option kernel() (noyau gaussien, d’Epanechnikov, rectangulaire ou bi-poids) et le degré du polynôme local via degree(). La syntaxe twoway (lpolyci mpg weight, degree(1) kernel(epanechnikov) bwidth(500)) (scatter mpg weight) fournit à l’analyste une représentation fluide et non biaisée des transitions comportementales au sein de la distribution bivariée.
6. Personnalisation avancée des marqueurs de données
6.1 Typologie géométrique et symbolique des points
L’expression graphique fondamentale du scatterplot réside dans ses marqueurs. Par défaut, Stata recourt à un disque plein d’un diamètre prédéfini. Cependant, la communication scientifique exige fréquemment une différentiation sémiotique raffinée, notamment lors de la publication d’articles destinés à l’impression monochrome ou lorsque l’analyste cherche à représenter des strates catégorielles sans recourir à la couleur.

L’option msymbol() (marker symbol) ouvre l’accès à un vaste répertoire de géométries vectorielles. Parmi les symboles normalisés les plus couramment mobilisés figurent :
- O et o : cercles pleins de grand ou petit diamètre.
- Oh et oh : cercles évidés (creux), particulièrement efficaces pour limiter l’occultation visuelle en cas de forte concentration ponctuelle.
- D, d, Dh, dh : losanges (diamonds) pleins ou évidés.
- S, s, Sh, sh : carrés (squares) pleins ou évidés.
- T, t, Th, th : triangles orientés vers le haut, pleins ou évidés.
- X et + : croix obliques ou droites, idéales pour les marqueurs discrets.
- p : point pixel d’une extrême finesse, réservé aux bases de données massives (Big Data).
Le choix judicieux de ces symboles autorise la projection conjointe de plusieurs sous-groupes sur un même plan graphique. En assignant par exemple des cercles pleins aux observations du groupe de contrôle et des losanges creux aux sujets exposés au traitement expérimental, le chercheur garantit une parfaite lisibilité de son document, y compris en cas de photocopie ou de numérisation en niveaux de gris à faible contraste.
6.2 Gestion de la chromatique, de la taille et de l’opacité
L’optimisation perceptive des marqueurs dépend étroitement du calibrage articulé de trois paramètres dimensionnels : la couleur, le calibre et la transparence. La nuance chromatique générale s’assigne au moyen de l’option mcolor(). Stata reconnaît un lexique exhaustif de noms de couleurs prédéfinis (par exemple navy, maroon, forest_green, dkorange) ainsi que des palettes hexadécimales ou des triplets RGB (par exemple « 120 45 200 »).

Une finesse accrue s’obtient en dissociant la bordure externe du marqueur de son aire intérieure. À cette fin, Stata met à disposition les options complémentaires mlcolor() (marker outline color) et mfcolor() (marker fill color), complétées par mlwidth() pour l’épaisseur du contour. Cette configuration permet de concevoir des cercles dotés d’un contour sombre et d’un remplissage plus clair, conférant un remarquable effet de profondeur au graphique tout en préservant l’individualité de chaque point en cas de superposition partielle.
Le dimensionnement métrique des points se contrôle via msize(). L’analyste peut spécifier des constantes sémantiques (tiny, vsmall, small, medium, large) ou définir des dimensions relatives à la taille globale du canevas en employant des unités scalaires précises (par exemple msize(*0.8) pour une diminution de 20 % par rapport à la taille étalon). Enfin, la problématique ubiquitaire du chevauchement de points (overplotting) — récurrente dans les grands échantillons — trouve une résolution élégante par l’utilisation de l’opacité paramétrée. En suffixant la désignation de la couleur par un pourcentage précédé du signe % (par exemple mcolor(navy%40)), l’analyste crée un canal alpha de transparence. Les zones de forte densité se manifestent alors d’elles-mêmes par une intensité chromatique cumulée, révélant la distribution sous-jacente sans saturation visuelle.
7. Configuration rigoureuse des axes de coordonnées
7.1 Définition des échelles, graduations et étendues
La lisibilité technique d’un scatterplot réside dans le calibrage métrologique de ses axes. Par défaut, les algorithmes de Stata calculent des bornes d’axes englobant strictement la distribution empirique. Cependant, les impératifs scientifiques exigent fréquemment de contraindre ces échelles, que ce soit pour inclure l’origine zéro, harmoniser des étendues entre différents graphiques comparatifs ou écarter des valeurs marginales disproportionnées.
Les modificateurs d’échelle s’articulent autour des options xscale() et yscale(). La sous-option fondamentale range(min max) permet d’élargir artificiellement l’espace métrique affiché : yscale(range(0 50)) garantit que l’ordonnée couvrira au minimum l’intervalle de zéro à cinquante, même si la plus faible valeur empirique enregistrée s’élève à quinze. En revanche, pour tronquer l’affichage, il conviendra d’agir en amont via une clause de filtrage if. Pour supprimer les marges résiduelles indésirables entre la bordure du tracé et la première ligne de graduation, l’analyste intégrera la directive noextend au sein de la sous-option d’échelle.
Le contrôle de la granularité des repères s’opère par le biais des options xlabel() et ylabel(). L’analyste peut définir une séquence arithmétique rigoureuse sous la forme (début(pas)fin) : xlabel(1000(1000)5000) positionnera un repère à 1000, 2000, 3000, 4000 et 5000 unités. Pour des distributions asymétriques étendues sur plusieurs ordres de grandeur, l’application d’une transformation logarithmique directement au niveau du système de projection s’effectue simplement via xscale(log) ou yscale(log), transformant l’espace cartésien en une échelle logarithmique sans obliger le chercheur à recalculer manuellement les logarithmes népériens de ses variables dans la base de données.
7.2 Étiquetage technique et typographie des axes
Un axe dépourvu d’une désignation substantielle claire constitue une négligence méthodologique invalidante. Les instructions xtitle(« Texte ») et ytitle(« Texte ») permettent de documenter avec une parfaite précision le concept mesuré et ses unités physiques ou monétaires de référence. Si ces options sont omises, Stata assigne automatiquement par défaut le label de la variable ou, à défaut, son nom brut, ce qui produit régulièrement des intitulés cryptiques ou inadaptés à la publication savante.
La typographie des étiquettes numériques de graduation se personnalise au moyen d’options imbriquées dans xlabel() et ylabel(). L’orientation angulaire des libellés revêt une importance critique : par défaut, les étiquettes verticales de l’axe Y sont orientées verticalement dans de nombreux styles graphiques, obligeant le lecteur à incliner la tête pour les déchiffrer. L’ajout de l’option angle(horizontal) au sein de ylabel() résout instantanément ce défaut d’ergonomie cognitive en orientant tous les chiffres de l’ordonnée de manière strictement horizontale : ylabel(0(10)60, angle(horizontal) labsize(small)).
L’implantation d’une grille de lecture orthogonale (grid lines) aide l’œil à projeter les coordonnées des points vers leurs axes respectifs. L’activation explicite se programme par grid, couplée à des modificateurs de style tels que gstyle(line), glcolor(gs14) et glpattern(dot), générant un treillis discret et non invasif. Enfin, lors de confrontations complexes nécessitant la projection simultanée de deux grandeurs physiques incommensurables (par exemple le prix en dollars et le poids en kilogrammes face à une même abscisse chronologique), Stata permet la création d’un axe secondaire indépendant via la commande yaxis(2), ouvrant la voie à des tracés bivariés d’une technicité avancée.
8. Titrage académique, légendes et annotations documentaires
8.1 Structure hiérarchique des titres et notes explicatives
Le protocole de présentation des documents scientifiques impose une hiérarchisation stricte de l’information contextuelle entourant le plan graphique. Stata intègre cette taxonomie par l’intermédiaire de balises textuelles dédiées : title() pour le titre cardinal, subtitle() pour la précision thématique intermédiaire, note() pour les métadonnées méthodologiques et les sources, et caption() pour des éclaircissements complémentaires de bas de page.

Chacune de ces composantes textuelles supporte des modificateurs précis de taille, d’alignement et de disposition. L’option size() permet d’ajuster le corps typographique (par exemple size(medium) ou size(large)), tandis que l’option position() régit l’ancrage spatial selon la métaphore des heures d’une horloge (la position 12 correspondant au centre supérieur du canevas). L’option span mérite une mention spéciale : en l’adjoignant à l’instruction de titre, l’analyste autorise la chaîne de caractères à s’étendre sur l’intégralité de la largeur globale de la fenêtre graphique, plutôt que de la contraindre à la seule zone délimitée par les axes cartésiens.

L’adjonction de notes explicatives méthodologiques via l’option note() constitue le vecteur d’excellence pour renseigner la taille finale de l’échantillon analysé (par exemple note(« Source : Enquête Emploi 2022, INSEE. N = 12 450 observations pondérées. »)), documenter le traitement des valeurs aberrantes ou indiquer les valeurs de significativité des tests statistiques associés. La formulation rigoureuse d’un bloc de titrage complet s’écrit conventionnellement ainsi :

twoway (scatter mpg weight) (lfit mpg weight), ///
title("Efficacité énergétique et masse des véhicules", size(medium) span) ///
subtitle("Modélisation bivariée sur le marché nord-américain (1978)", size(small) span) ///
note("Source des données : Fichier interne Stata (sysuse auto). Droite tracée par moindres carrés ordinaires.")
Cette structuration rigoureuse décharge le corps de texte principal de l’article scientifique d’un volume considérable de gloses descriptives en rendant le graphique pleinement autonome sur le plan informationnel.
8.2 Optimisation fonctionnelle de la légende statistique
Dès lors qu’un graphique twoway agrège plusieurs calques fonctionnels distincts — par exemple des marqueurs dispersés et une ou plusieurs droites d’ajustement —, le compilateur graphique de Stata génère automatiquement une légende en bas du canevas. Si ce comportement par défaut s’avère précieux, le formatage automatique des libellés de légende (qui reprennent souvent la syntaxe brute du type fitted values) manque de l’élégance requise pour une publication savante.
La commande globale legend() régit tous les paramètres de cet encart. La sous-option primordiale order() permet de redéfinir sélectivement les calques représentés et d’en réécrire les intitulés respectifs. Par exemple, l’expression legend(order(1 « Données observées » 2 « Ajustement MCO »)) assigne des dénominations méthodologiques claires aux premier et second calques, tout en écartant d’éventuels calques intermédiaires non informatifs.
Le contrôle dimensionnel et spatial de la légende se module via plusieurs paramètres essentiels :
- rows(n) et cols(m) : forcent la disposition matricielle sur un nombre fixe de rangées ou de colonnes, optimisant ainsi l’encombrement spatial vertical ou horizontal.
- position(p) et ring(0) : positionnent la légende à l’emplacement horaire désiré. La commande spécifique ring(0) intègre la légende directement à l’intérieur de la surface des axes de coordonnées, permettant de loger celle-ci dans un espace vide du plan (par exemple dans le coin supérieur droit à la position 1 heure) sans contracter la surface utile du repère cartésien.
- region(lcolor(none)) : supprime la bordure rectangulaire standard encadrant la légende, épurant le design visuel global en réduisant le ratio d’encre non fonctionnelle.
- legend(off) : éteint purement et simplement la légende dans les contextes où la distinction des courbes et nuages est explicite ou documentée directement par des annotations in-situ.
9. Identification, labellisation et diagnostic des observations
9.1 Affichage sélectif du libellé des points
Dans l’exploration approfondie de petits ou moyens échantillons — tels que des cohortes macroéconomiques où chaque unité d’analyse incarne un État souverain ou un secteur d’activité spécifique —, l’identification nominative directe de chaque observation sur le repère cartésien accroît substantiellement la valeur heuristique de la figure. Stata fournit à cette fin l’option mlabel(nom_variable).
L’adjonction brute d’étiquettes textuelles engendre fréquemment des chevauchements disgracieux entre le symbole du marqueur et les caractères typographiques. Pour remédier à cet écueil géométrique, l’option mlabpos(position) utilise le cadran horaire (de 1 à 12) pour orienter le décalage de l’étiquette par rapport au centre du point : la valeur 12 positionne le texte au zénith du point, tandis que les valeurs 3 ou 9 le décalent respectivement vers la droite ou la gauche. L’ajustement du corps du texte via mlabsize(vsmall) et de sa couleur via mlabcolor(gs6) complète le dispositif de lisibilité.
Lorsque la taille de l’échantillon est conséquente, annoter la totalité des points sature inévitablement l’espace visuel et rend le graphique totalement illisible. La stratégie méthodologique de référence consiste alors à filtrer conditionnellement l’affichage du texte pour n’isoler que les unités atypiques ou d’intérêt spécifique. Cette procédure s’implémente avec élégance par la génération préalable d’une variable de texte auxiliaire :
generate label_cible = make if price > 12000 | mpg > 35 twoway (scatter mpg price, mlabel(label_cible) mlabpos(2) mlabsize(vsmall))
Par ce procédé d’étiquetage chirurgical, seules les observations franchissant les seuils critiques prédéfinis voient leur dénomination imprimée sur la figure, les autres cellules recevant une chaîne vide que Stata traite sans générer d’artéfact graphique superflu.
9.2 Repérage des points de levier et résidus atypiques
L’une des vocations cardinales du scatterplot réside dans sa capacité à servir d’instrument de diagnostic économétrique pour détecter les anomalies distributionnelles susceptibles de distordre l’estimation des paramètres de régression. Deux pathologies distinctes doivent être dissociées sur le plan géométrique : les observations présentant un résidu élevé (outliers en Y) et les observations possédant un levier élevé (leverage points en X).
Après l’ajustement d’un modèle de régression par la commande regress y x, Stata autorise l’extraction immédiate des métriques de diagnostic grâce à la post-estimation predict. L’analyste extrait classiquement les résidus studentisés par predict rstud, rstudent et les mesures d’influence globale, au premier rang desquelles la distance de Cook via predict dcook, cooksd, ou les valeurs du levier par predict lev, leverage.
La visualisation bivariée de ces métriques diagnostiques s’avère particulièrement éclairante. Il est possible de construire un graphique dit « à bulles » où la taille des marqueurs du scatterplot est proportionnelle à la distance de Cook en utilisant l’analytique scatter y x [aweight = dcook]. Par ailleurs, l’insertion de lignes de référence horizontales et verticales au moyen de yline() et xline() matérialise instantanément les seuils critiques conventionnels :
regress mpg weight
predict rstud, rstudent
twoway (scatter rstud weight, mcolor(navy%60)) ///
(scatter rstud weight if abs(rstud) > 2, mcolor(cranberry) mlabel(make) mlabsize(tiny)) ///
, yline(-2 0 2, lpattern(dash) lcolor(gs10)) ///
ytitle("Résidus studentisés") xtitle("Poids du véhicule (livres)") ///
legend(order(1 "Observations régulières" 2 "|Résidu| > 2 (Atypiques)"))
Cette approche hybride associe la modélisation statistique formelle et le discernement graphique pour identifier sans équivoque les observations qui exercent une traction disproportionnée sur l’hyperplan de régression.
10. Stratification, partitionnement et graphiques en trellis
10.1 Génération de sous-graphiques catégoriels avec l’option by()
L’hétérogénéité d’un échantillon empirique est fréquemment structurée par une ou plusieurs variables qualitatives catégorielles (sexe, pays, appartenance institutionnelle, secteur d’activité). La projection indifférenciée de toutes les unités d’observation sur un repère unique occulte les mécanismes de causalité conditionnelle. Afin d’y remédier, Stata met à disposition une fonctionnalité majeure d’architecture visuelle : le partitionnement en sous-graphiques juxtaposés (trellis plots ou faceting), orchestré par la sous-option globale by(variable_catégorielle).
L’invocation de by() subdivise automatiquement l’espace d’affichage en autant de panneaux miniatures qu’il existe de modalités exhaustives au sein de la variable de stratification. Ainsi, la commande twoway (scatter mpg weight) (lfit mpg weight), by(foreign) engendre instantanément deux panneaux distincts — l’un consacré à la cohorte nationale, l’autre aux véhicules importés — au sein desquels les coordonnées et la droite d’ajustement sont calculées de manière strictement autonome.
La maîtrise avancée de cette option requiert la gestion fine de ses sous-paramètres organisationnels :
- by(cat, rows(1)) ou by(cat, cols(2)) : détermine la géométrie de la matrice d’affichage en imposant le nombre de rangées ou de colonnes pour harmoniser la morphologie globale avec le format d’une page imprimée.
- by(cat, total) : commande l’adjonction d’un panneau supplémentaire intégrant l’échantillon global agrégé, autorisant ainsi une comparaison visuelle immédiate entre les dynamiques locales de sous-groupes et la distribution totale.
- by(cat, legend(pos(6))) : rapatrie la gestion de la légende au niveau global du trellis plutôt que de multiplier les blocs de légende au sein de chaque panneau élémentaire.
L’un des atouts déterminants du dispositif réside dans l’harmonisation automatique des échelles d’axes : par défaut, Stata synchronise rigoureusement les minimums et maximums de tous les panneaux du trellis. Cette commensurabilité évite les biais de lecture cognitifs résultant d’amplitudes asymétriques, préservant ainsi l’intégrité de la comparaison inter-groupes.
10.2 Superposition directe de groupes sur un panneau unique
Si la partition en sous-graphiques via by() brille par sa netteté pour comparer des distributions globales disjointes, elle fragilise parfois l’appréciation directe d’écarts marginaux ténus. Dans cette configuration, la superposition de l’ensemble des cohortes sur un plan cartésien unique, identifiées par des codes sémiotiques contrastés, s’avère méthodologiquement supérieure. Cette stratégie permet de visualiser sans ambiguïté les phénomènes d’interaction modératrice (effet modérateur d’une variable qualitative sur la relation liant deux grandeurs continues).

Pour mettre en œuvre cette superposition au sein de l’environnement Stata, la méthode préconisée repose sur l’empilement explicite de couples d’instructions conditionnelles via if, associant à chaque groupe un style de marqueur et une couleur dédiée :
twoway (scatter mpg weight if foreign == 0, mcolor(navy%70) msymbol(circle) msize(small)) ///
(lfit mpg weight if foreign == 0, lcolor(navy) lwidth(medthick)) ///
(scatter mpg weight if foreign == 1, mcolor(cranberry%70) msymbol(triangle) msize(small)) ///
(lfit mpg weight if foreign == 1, lcolor(cranberry) lwidth(medthick) lpattern(dash)), ///
ytitle("Consommation (miles par gallon)") ///
xtitle("Masse du véhicule (livres)") ///
legend(order(1 "Domestique (Données)" 2 "Domestique (MCO)" ///
3 "Étranger (Données)" 4 "Étranger (MCO)") cols(2))
Cette visualisation synthétique démontre avec force si les deux pentes de régression divergent de manière significative. Un croisement marqué des droites ou un écart angulaire substantiel entre les pentes apporte l’évidence visuelle d’un terme d’interaction statistique entre la masse et l’origine géographique, alertant l’économètre sur l’impératif d’intégrer formellement un produit vectoriel dans son équation de régression multivariée.
11. Matrices de nuages de points pour l’analyse multivariée
11.1 Syntaxe et structure de la commande graph matrix
Lorsque le protocole de recherche aborde un espace vectoriel à haute dimensionnalité comprenant une constellation de variables quantitatives continues, l’évaluation séquentielle et isolée de chaque paire bivariée devient fastidieuse. Stata résout cette complexité multidimensionnelle par une commande dédiée de haut niveau : graph matrix. Cette instruction engendre une matrice complète de nuages de points (scatterplot matrix), projetant toutes les permutations bivariées possibles au sein d’une grille symétrique carrée.
La formulation syntaxique de base se caractérise par une remarquable concision : graph matrix variable1 variable2 variable3 variable4. Si quatre variables sont spécifiées, Stata compile instantanément une matrice structurée en seize cases élémentaires (quatre rangées et quatre colonnes), où chaque cellule hors-diagonale trace la dispersion croisée de la variable de sa ligne face à celle de sa colonne. La diagonale principale accueille par défaut les intitulés respectifs des variables en présence.
En raison de la compacité inhérente à l’agrégation de multiples cellules miniatures sur un espace de rendu unique, la personnalisation des marqueurs s’impose avec acuité. L’option msize() doit impérativement être configurée sur des tailles infinitésimales (telles que msize(vtiny) ou msize(tiny)), et l’opacité modérée via mcolor(%40), afin de prévenir une oblitération totale des tracés par surcharge locale d’encre. De surcroît, les clauses conditionnelles if et in demeurent totalement opérantes au niveau global de l’instruction graph matrix, garantissant la reproductibilité des filtrages d’échantillon sur la totalité de l’espace matriciel généré.
11.2 Personnalisation avancée de la matrice de dispersion
L’optimisation d’une matrice de nuages de points passe par la rationalisation de l’information projetée. Par nature mathématique, une matrice de dispersion brute est redondante : la portion triangulaire supérieure constitue la réflexion spéculaire — par symétrie axiale — de la portion triangulaire inférieure. Pour alléger la charge cognitive du lecteur et concentrer son attention sur l’essentiel, Stata propose l’option half, qui commande la suppression pure et simple du triangle supérieur du graphique.
Une personnalisation de niveau professionnel consiste à transformer la diagonale principale, conventionnellement stérile, en un espace hautement informatif. Grâce à l’option diagonal(), le chercheur peut intégrer des distributions univariées marginales — notamment des tracés de densité par la méthode du noyau ou des histogrammes condensés — directement au sein des cases diagonales correspondantes. L’observation conjointe de la densité univariée sur la diagonale et des corrélations croisées sur les cellules adjacentes délivre une vue synoptique exhaustive du comportement stochastique du vecteur aléatoire.
La maîtrise des matrices de dispersion joue un rôle fondamental dans la phase préparatoire de l’économétrie multivariée. Elle permet de déceler à vue d’œil les phénomènes critiques de multicolinéarité parfaite ou quasi-parfaite : deux régresseurs présentant un alignement linéaire quasi-strict dans leur cellule matricielle commune signaleront instantanément un risque d’instabilité numérique pour l’inversion de la matrice X’X lors de l’estimation MCO, guidant ainsi l’analyste vers la sélection parcimonieuse de ses variables explicatives ou le recours à des modélisations en équations structurelles.
12. Thèmes visuels, automatisation et exportation haute résolution
12.1 Sélection et modification des chart schemes
L’esthétique graphique de Stata est pilotée par un système de feuilles de style universelles baptisées schemes. Ces thèmes gouvernent l’intégralité des propriétés chromatiques, géométriques et typographiques par défaut : couleur d’arrière-plan du canevas, épaisseur des bordures d’axes, dimensionnement des graduations, palettes chromatiques par défaut et marges périmétriques. Pendant de nombreuses années, le thème standard s2color s’est attiré des critiques récurrentes en raison de son fond grisaille peu attrayant et de ses contours contrastés mal adaptés aux exigences contemporaines du graphisme scientifique.
Pour modifier cette esthétique par défaut, l’utilisateur peut appliquer un style ponctuellement au sein d’une commande via l’option scheme(nom_du_theme), ou reconfigurer globalement l’ensemble de sa session de travail via la directive d’environnement set scheme nom_du_theme, permanently. Parmi les thèmes natifs modernes les plus rigoureux figurent s1mono et s1color, qui privilégient un fond blanc d’une propreté exemplaire, exempt de toute encre superflue. La communauté académique a également développé des styles tiers renommés, au premier rang desquels figure le schéma cleanplots conçu par Trenton Mize, devenu un standard de fait dans de nombreuses revues d’excellence pour sa clarté minimaliste et ses palettes optimisées pour les personnes présentant des déficiences de la vision des couleurs (daltonisme).
L’adoption d’un thème adapté garantit une harmonisation graphique absolue à travers tous les chapitres d’un mémoire doctoral ou les différents articles d’un programme de recherche, éliminant les disparités stylistiques parasites pour asseoir une identité visuelle scientifique d’une irréprochable cohérence.
12.2 Exportation vectorielle et préparation pour la publication
L’aboutissement ultime de la production d’un nuage de points réside dans son exportation hors du logiciel Stata vers un format de fichier pérenne, calibré pour satisfaire les critères techniques drastiques des éditeurs académiques. L’outil opérant cette transposition est l’instruction de bas niveau graph export.
Sur le plan méthodologique, une distinction radicale sépare les formats vectoriels des formats matriciels (raster). Pour toute publication savante — tout particulièrement lors d’une composition sous le système de composition typographique LaTeX —, le recours aux formats vectoriels est rigoureusement impératif. Les formats PDF (Portable Document Format) et EPS (Encapsulated PostScript) encodent les éléments graphiques — lignes, segments, marqueurs, caractères — sous forme d’instructions mathématiques pures plutôt que d’une grille de pixels figée. En conséquence, la figure conserve une netteté absolue sans la moindre pixellisation, quelle que soit la puissance d’agrandissement appliquée lors de l’impression physique.
twoway (scatter mpg weight) (lfit mpg weight) graph export "Figure1_Dispersion.pdf", as(pdf) replace
Dans les circonstances où des impératifs éditoriaux ou des outils grand public (tels que Microsoft Word) exigent des images matricielles, l’analyste se tournera vers les formats PNG ou TIFF. Il est alors absolument vital de paramétrer explicitement une résolution minimale de 300 à 600 points par pouce (DPI), sous peine de produire des figures floues ou crénelées impropres à l’évaluation par les pairs. Cette exigence se programme par l’adjonction de l’option width() ou la configuration globale de la résolution :
graph export "Figure1_Dispersion.png", as(png) width(3600) height(2400) replace
Cette directive génère une image d’une très haute densité de pixels, garantissant une netteté irréprochable lors de l’incorporation finale dans les épreuves d’imprimerie.
12.3 Reproductibilité et automatisation via fichiers Do-file
Dans le paradigme contemporain de la science ouverte et de la recherche empirique vérifiable, la manipulation interactive d’interfaces graphiques par clics de souris doit être proscrite au profit d’une programmation déclarative séquentielle intégrale, consignée au sein de scripts exécutables autonomes désignés sous le terme de fichiers do-files.
La conception d’un do-file graphique hautement professionnel repose sur l’usage judicieux des macros locales (local). Ces variables d’environnement temporaires permettent de paramétrer de manière centralisée les options visuelles récurrentes, garantissant qu’une modification esthétique transversale (telle que le changement d’une nuance chromatique institutionnelle ou la taille d’une police) se répercutera instantanément sur l’intégralité des figures produites sans nécessiter une réécriture fastidieuse de chaque ligne de code :
/* ========================================================================== */
/* DO-FILE : Generation_Figures_Econometriques.do */
/* OBJET : Nuages de points bivariés haute résolution */
/* AUTEUR : Laboratoire d'Analyse Économique et Sociale */
/* DATE : Novembre 2023 */
/* ========================================================================== */
clear all
set more off
sysuse auto, clear
// Définition centralisée des paramètres graphiques
local COULEUR_POINTS "navy%60"
local COULEUR_DROITE "crimson"
local STYLE_POINTS "circle"
local OPTIONS_TITRE "size(medium) span color(gs2)"
local THEME_GENERAL "s1mono"
// Construction et rendu du scatterplot
twoway (scatter mpg weight, msymbol(`STYLE_POINTS') mcolor(`COULEUR_POINTS') msize(small)) ///
(lfit mpg weight, lcolor(`COULEUR_DROITE') lwidth(thick)), ///
scheme(`THEME_GENERAL') ///
title("Ajustement linéaire de la consommation énergétique", `OPTIONS_TITRE') ///
ytitle("Miles par gallon (MPG)", size(small)) ///
xtitle("Masse pondérale (Livres)", size(small)) ///
ylabel(, angle(horizontal) nogrid) ///
legend(order(1 "Données d'observation" 2 "Droite des MCO") pos(6) rows(1)) ///
note("Note : Données issues de l'audit automobile de 1978. N = 74 observations.")
// Exportation vectorielle automatisée
graph export "Figure_Reproducible_Finale.pdf", as(pdf) replace
L’implémentation de cette architecture de script garantit qu’un rechargement complet des données ou une actualisation de l’échantillon permettra de rééditer l’intégralité du corpus graphique de l’étude en une fraction de seconde, avec une exactitude mathématique et formelle absolue, attestant du plus haut niveau de rigueur méthodologique et d’intégrité scientifique.
Références
- Anscombe, F. J. (1973). Graphs in statistical analysis. The American Statistician, 27(1), 17–21. https://doi.org/10.1080/00031305.1973.10478966
- Cleveland, W. S. (1979). Robust locally weighted regression and smoothing scatterplots. Journal of the American Statistical Association, 74(368), 829–836. https://doi.org/10.1080/01621459.1979.10481038
- Mize, T. D. (2018). cleanplots: A theme for clean, publication-ready Stata graphics. The Stata Journal, 18(4), 890–905. https://www.stata-journal.com/article.html?article=gr0070
- Mitchell, M. N. (2012). A visual guide to Stata graphics (3rd ed.). Stata Press.
- StataCorp. (2023). Stata graphics reference manual: Release 18. Stata Press. https://www.stata.com/manuals/g.pdf
- Tufte, E. R. (2001). The visual display of quantitative information (2nd ed.). Graphics Press.
- Tukey, J. W. (1977). Exploratory data analysis. Addison-Wesley.
- UCLA: Statistical Consulting Group. (2021). Introduction to Stata graphics. UCLA Institute for Digital Research and Education. https://stats.oarc.ucla.edu/stata/modules/graph8/intro/