Je préfère fortement utiliser matplotlib
in OOP style:
f, axarr = plt.subplots(2, sharex=True)
axarr[0].plot(...)
axarr[1].plot(...)
Cela facilite le suivi de plusieurs chiffres et sous-parcelles.
Question: Comment utiliser Seaborn de cette façon? Ou, comment changer cet exemple en OOP style? Comment dire seaborn
fonctions de traçage comme lmplot
que Figure
ou Axes
il parcourt?
Cela dépend un peu de la fonction de navigation que vous utilisez.
Les fonctions de traçage dans Seaborn sont généralement divisées en deux classes
regplot
, boxplot
, kdeplot
et bien d'autreslmplot
, factorplot
, jointplot
et un ou deux autresLe premier groupe est identifié en prenant un argument explicite ax
et en retournant un objet Axes
. Comme cela le suggère, vous pouvez les utiliser dans un style "orienté objet" en leur transmettant votre Axes
:
f, (ax1, ax2) = plt.subplots(2)
sns.regplot(x, y, ax=ax1)
sns.kdeplot(x, ax=ax2)
Les fonctions au niveau des axes ne dessineront que sur un Axes
et ne gêneront pas la figure, elles pourront donc parfaitement coexister dans un script matplotlib orienté objet.
Le second groupe de fonctions (au niveau de la figure) se distingue par le fait que le tracé résultant peut potentiellement inclure plusieurs axes qui sont toujours organisés de manière "significative". Cela signifie que les fonctions doivent avoir un contrôle total sur la figure, il est donc impossible de tracer, par exemple, un lmplot
sur une qui existe déjà. L'appel de la fonction initialise toujours une figure et la configure pour le tracé spécifique dessiné.
Cependant, une fois que vous avez appelé lmplot
, il retournera un objet du type FacetGrid
. Cet objet a quelques méthodes pour opérer sur le tracé résultant qui en savent un peu sur la structure du tracé. Il expose également la figure sous-jacente et le tableau d'axes au FacetGrid.fig
et FacetGrid.axes
arguments. La fonction jointplot
est très similaire, mais elle utilise un objet JointGrid
. Donc, vous pouvez toujours utiliser ces fonctions dans un contexte orienté objet, mais toute votre personnalisation doit venir après que vous ayez appelé la fonction.