Es hängt ein wenig davon ab, welche Seaborn-Funktion Sie verwenden.
Die Plotfunktionen bei Seegeborenen sind grob in zwei Klassen unterteilt
- „Achsen-level“ Funktionen, einschließlich
regplot
, boxplot
, kdeplot
, und viele andere
- „Figure-level“ Funktionen, einschließlich der
lmplot
, factorplot
, jointplot
und ein oder zwei andere
Die erste Gruppe wird identifiziert, indem ein explizites ax
Argument verwendet und ein Axes
Objekt zurückgegeben wird. Wie dies nahelegt, können Sie sie in einem "objektorientierten" Stil verwenden, indem Sie Ihre Axes
an sie übergeben:
f, (ax1, ax2) = plt.subplots(2)
sns.regplot(x, y, ax=ax1)
sns.kdeplot(x, ax=ax2)
Funktionen auf Axes
Achsenebene zeichnen nur auf eine und werden sonst nicht mit der Figur in Konflikt geraten, sodass sie in einem objektorientierten Matplotlib-Skript perfekt glücklich nebeneinander existieren können.
Die zweite Gruppe von Funktionen (Abbildungsebene) zeichnet sich dadurch aus, dass das resultierende Diagramm möglicherweise mehrere Achsen enthalten kann, die immer "sinnvoll" organisiert sind. Das bedeutet, dass die Funktionen die vollständige Kontrolle über die Figur haben müssen, so dass es nicht möglich ist, beispielsweise eine lmplot
auf eine bereits vorhandene zu zeichnen . Durch Aufrufen der Funktion wird immer eine Figur initialisiert und für das von ihr gezeichnete Diagramm eingerichtet.
Sobald Sie aufgerufen haben lmplot
, wird jedoch ein Objekt des Typs zurückgegeben FacetGrid
. Dieses Objekt verfügt über einige Methoden zum Bearbeiten des resultierenden Diagramms, die etwas über die Struktur des Diagramms wissen. Außerdem werden die zugrunde liegende Figur und das Achsenarray an den Argumenten FacetGrid.fig
und FacetGrid.axes
angezeigt. Die jointplot
Funktion ist sehr ähnlich, verwendet jedoch ein JointGrid
Objekt. Sie können diese Funktionen also weiterhin in einem objektorientierten Kontext verwenden, aber alle Anpassungen müssen erfolgen, nachdem Sie die Funktion aufgerufen haben.