У меня есть pandas.DataFrame
и я хочу построить график на основе двух столбцов: Age
(int), Survived
(int - 0
или 1
). Теперь у меня есть что-то вроде этого:
Это код, который я использую:
class DataAnalyzer:
def _facet_grid(self, func, x: List[str], col: str = None, row: str = None) -> None:
g = sns.FacetGrid(self.train_data, col=col, row=row)
if func == sns.barplot:
g.map(func, *x, ci=None)
else:
g.map(func, *x)
g.add_legend()
plt.show()
def analyze(self) -> None:
# Check if survival rate is connected with Age
self._facet_grid(plt.hist, col='Survived', x=['Age'])
Так что это показано на двух сюжетах. Это хорошо, но труднее увидеть разницу между количеством записей, которые имеют 0
против 1
в столбце " Survived
, для конкретного возрастного диапазона.
Поэтому я хочу иметь что-то вроде этого:
В этом сценарии вы могли увидеть эту разницу. Есть ли какой-нибудь способ сделать это на seaborn
(потому что там я могу легко оперировать pandas.DataFrame
)? Я не хочу использовать ванильный matplotlib
если это возможно
Просто сложите общую гистограмму с выжившей -0. Трудно дать точную функцию без точной формы фрейма данных, но здесь приведен базовый пример с одним из примеров наборов seaborn.
import matplotlib.pyplot as plt
import seaborn as sns
tips = sns.load_dataset("tips")
sns.distplot(tips.total_bill, color="gold", kde=False, hist_kws={"alpha": 1})
sns.distplot(tips[tips.sex == "Female"].total_bill, color="blue", kde=False, hist_kws={"alpha":1})
plt.show()