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, jointplotund ein oder zwei andere
Die erste Gruppe wird identifiziert, indem ein explizites axArgument verwendet und ein AxesObjekt zurückgegeben wird. Wie dies nahelegt, können Sie sie in einem "objektorientierten" Stil verwenden, indem Sie Ihre Axesan sie übergeben:
f, (ax1, ax2) = plt.subplots(2)
sns.regplot(x, y, ax=ax1)
sns.kdeplot(x, ax=ax2)
Funktionen auf AxesAchsenebene 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 lmplotauf 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.figund FacetGrid.axesangezeigt. Die jointplotFunktion ist sehr ähnlich, verwendet jedoch ein JointGridObjekt. Sie können diese Funktionen also weiterhin in einem objektorientierten Kontext verwenden, aber alle Anpassungen müssen erfolgen, nachdem Sie die Funktion aufgerufen haben.