Подтвердить что ты не робот

Построение графика с использованием морского объекта с использованием объектно-ориентированного интерфейса matplotlib

Я предпочитаю использовать matplotlib в стиле ООП:

f, axarr = plt.subplots(2, sharex=True)
axarr[0].plot(...)
axarr[1].plot(...)

Это упрощает отслеживание нескольких фигур и подзаголовков.

Вопрос: Как пользоваться морским путем таким образом? Или, как изменить этот пример на стиль ООП? Как сказать seaborn построение графических функций, таких как lmplot, которые Figure или Axes отображает?

4b9b3361

Ответ 1

Это немного зависит от того, какую функцию вы используете.

Функции построения в морском море в целом разделены на два класса

  • "Осевые" функции, включая 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 script.

Вторая группа функций (уровень уровня) отличается тем, что полученный график может включать в себя несколько осей, которые всегда организованы "значимым" способом. Это означает, что функции должны иметь полный контроль над фигурой, поэтому невозможно построить, скажем, lmplot, на тот, который уже существует. Вызов функции всегда инициализирует фигуру и устанавливает ее для конкретного графика, который он рисует.

Однако после вызова lmplot он вернет объект типа FacetGrid. Этот объект имеет некоторые методы работы на полученном графике, которые немного знают о структуре графика. Он также предоставляет базовую фигуру и массив осей в аргументах FacetGrid.fig и FacetGrid.axes. Функция jointplot очень похожа, но использует объект JointGrid. Таким образом, вы все равно можете использовать эти функции в объектно-ориентированном контексте, но все ваши настройки должны появиться после того, как вы вызвали функцию.