Это немного зависит от того, какую функцию seaborn вы используете.
Функции построения графиков в seaborn можно разделить на два класса.
- Функции «Топоры уровня», в том числе
regplot, boxplot, kdeplotи многие другие
- Функции «Рисунок на уровне», в том числе
lmplot, factorplot, jointplotи один или два других
Первая группа идентифицируется путем принятия явного axаргумента и возврата Axesобъекта. Как следует из этого, вы можете использовать их в «объектно-ориентированном» стиле, передав им свой Axes:
f, (ax1, ax2) = plt.subplots(2)
sns.regplot(x, y, ax=ax1)
sns.kdeplot(x, ax=ax2)
Функции уровня осей будут рисовать только на Axesфигуре и в противном случае не будут вмешиваться в фигуру, поэтому они могут прекрасно сосуществовать в объектно-ориентированном скрипте matplotlib.
Вторая группа функций (уровень рисунка) отличается тем, что результирующий график потенциально может включать несколько осей, которые всегда организованы «осмысленным» образом. Это означает, что функции должны иметь полный контроль над фигурой, поэтому невозможно нанести, скажем, график lmplotна уже существующий. Вызов функции всегда инициализирует фигуру и настраивает ее для конкретного графика, который она рисует.
Однако, как только вы позвоните lmplot, он вернет объект типа FacetGrid. У этого объекта есть несколько методов для работы с результирующим графиком, которые немного знают о структуре графика. Он также раскрывает , лежащие в основе фигуры и множество осей по поводу FacetGrid.figи FacetGrid.axesаргументов. jointplotФункция очень похожа, но она использует JointGridобъект. Таким образом, вы по-прежнему можете использовать эти функции в объектно-ориентированном контексте, но все ваши настройки должны выполняться после того, как вы вызвали функцию.