Это немного зависит от того, какую функцию 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
объект. Таким образом, вы по-прежнему можете использовать эти функции в объектно-ориентированном контексте, но все ваши настройки должны выполняться после того, как вы вызвали функцию.