ssc install fabplot
* help fabplot
Contrôler l’effet spaghetti avec fabplot (NJ.Cox)
La commande fabplot
programmée en 2021 par Nj.Cox permet de contrôler efficacement les effets dits spaghetti (courbes) ou paella (nuages de points). J’ai ajouté une option pour modifier les courbes au second plan, NJ.Cox ayant toujours tendance à bloquer l’habillage de ces commandes graphiques. La commande a été renommée fabplot2
et s’installe via github. Bien évidemment, tout le mérite revient à l’auteur d’origine, l’ajout de l’option ne m’a pris que quelques dizaines de secondes.
J’avais présenté le problème lors de la formation de 2020, mais avec un programme très compliqué. Cette commande très simple, permet de bien contrôler ce problème visualisation en utilisant sur deux objets graphiques l’option by
…..pourquoi je n’y avais pas pensé.
Installation
fabplot
Commande d’origine. L’objet en arrière plan n’est pas modifiable.
fabplot2
J’ai juste ajouté l’option backopts
. Même principe que l’option frontopts
qui modifie l’objet au premier plan.
from("https://raw.githubusercontent.com/mthevenin/stata_graphiques/master/ressources/fabplot2/") replace net install fabplot2,
Exemple
Note J’utilise systématiquement un thème que je génère avec le paquet
grstyle
de B.Jann.
Je reprends le même exemple que pour la formation, avec la base babynames.
Ouverture de de la base:
"https://raw.githubusercontent.com//mthevenin/stata_graphiques/master/ressources/fabplot2"
webuse set
use babynames, clear webuse set
Empilement des 9 courbes
….. C’est illisible
* thème avec grstyle
grstyle init
grstyle set meshn(9)
grstyle set color tableau,
* Graphique
local(name)
levelsof name, = 1
local i
foreach nom of local name {= `i++'
local j local line `line' line n year if name=="`nom'" ||
local leg `leg' `j' "`nom'"
}
tw `line' , legend(order(`leg') row(2) size(*.8) region(color(%0)) pos(11)) ytitle("") ylabel(0(20000)100000, angle(0)) ///
title("Popularité des prénoms")
Small-Multiple avec fabplot
Avec un graphique de type statique, une solution à priviliégier serait un graphique de type small-multiple en conservant les autres courbes en arrière plan. Avec Stata, ce type de graphique est exécuté avec l’option by()
.
Syntaxe allégée
fabplot[2] command yvar xvar [if] [in], by(byvar [,byopts]) [frontopts() backopts()] ....
fabplot[2]
:fabplot
oufabplot2
command
: line ou scatterby(byvar [,opts)]
: indiquer à minima la variable catégorielle qui produira chaque sous graphique. Beaucoup d’options du graphique entre sans cette option, comme les titres ou la couleur du backgroundfrontopts
: les options de l’objet graphique en relief, comme la couleur et l’épaisseur de la courbe ou des marqueursbackopts
: avecfabplot2
seulement, les options de l’objet graphique en arrière plan.
Application
#delimit ;
fabplot2 line n year, by(name, title("Popularité des prénoms", pos(11)))
frontopts(lw(*2) lc("45 178 125"))
backopts(lw(*.5) lc(gs9))
ytitle("") ylabel(0(20000)100000, labsize(*.8) glw(*.5))
;
#delimit cr