Seaborn: как составить сюжет с несколькими линейными графиками?sns.relplot не поддерживает это? - PullRequest
0 голосов
/ 23 марта 2019

В документации по морскому дну проводится различие между функциями на уровне фигуры и на уровне оси: https://seaborn.pydata.org/introduction.html#figure-level-and-axes-level-functions

Я понимаю, что такие функции, как sns.boxplot, могут принимать ось в качестве аргумента и, следовательно, могут использоваться в рамках сюжетов.

Но как насчет sns.relplot ()? Нет ли способа поместить это в сюжеты?

В более общем смысле, есть ли способ заставить seaborn генерировать линейные участки в пределах вспомогательных участков?

Например, это не работает:

fig,ax=plt.subplots(2)
sns.relplot(x,y, ax=ax[0])

потому что relplot не принимает оси в качестве аргумента.

1 Ответ

0 голосов
/ 23 марта 2019

Ну, это не правда. Вы действительно можете передавать объекты оси в relplot. Ниже приведен минимальный ответ. Ключевым моментом здесь является закрытие объектов пустой оси , возвращаемых relplot. Затем вы также можете использовать ax[0] или ax[1], чтобы добавить дополнительные кривые к вашим индивидуальным подфигурам так же, как вы сделали бы с matplotlib.

import seaborn as sns
import matplotlib.pyplot as plt

fig, ax = plt.subplots(2)

xdata = np.arange(50)

sns.set(style="ticks")
tips = sns.load_dataset("tips")
g1 = sns.relplot(x="total_bill", y="tip", hue="day", data=tips, ax=ax[0])
g2 = sns.relplot(x="total_bill", y="tip", hue="day", data=tips, ax=ax[1])

# Now you can add any curves to individual axis objects 
ax[0].plot(xdata, xdata/5) 

# You will have to close the additional empty figures returned by replot
plt.close(g1.fig)
plt.close(g2.fig) 
plt.tight_layout()

enter image description here

Вы также можете создать линейный сюжет, используя seaborn как

import seaborn as sns
import numpy as np

x = np.linspace(0, 5, 100)
y = x**2

ax = sns.lineplot(x, y)
ax.set_xlabel('x-label')
ax.set_ylabel('y-label') 

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...