Seaborn 堆叠直方图/条形图
回答问题 我有一个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 = sn
·
回答问题
我有一个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'])
所以这显示在两个子图上。这很好,但是对于特定的年龄范围,很难看到Survived
列中具有0
与1
的记录数量之间的差异。
所以我想要这样的东西:
在这种情况下,您可以看到这种差异。有没有办法在seaborn
上做(因为我可以很容易地在pandas.DataFrame
上操作)?如果可能的话,我不想使用香草matplotlib
Answers
只需将总直方图与幸存的 -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()
更多推荐
已为社区贡献126473条内容
所有评论(0)