gpt4 book ai didi

python - Seaborn 堆叠直方图/条形图

转载 作者:行者123 更新时间:2023-12-02 09:03:26 34 4
gpt4 key购买 nike

我有一个 pandas.DataFrame,我想根据两列绘制一个图表:Age (int)、Survived (int) - 01)。现在我有这样的东西:

enter image description here

这是我使用的代码:

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 列中具有 01 的记录数量之间的差异年龄范围。

所以我想要这样的东西:

enter image description here

在这种情况下,您可以看到这种差异。有没有办法在seaborn上做到这一点(因为我可以轻松地在pandas.DataFrame上操作)?如果可能的话,我不想使用普通 matplotlib

最佳答案

从seaborn 0.11.0开始,你可以这样做

# stacked histogram
import matplotlib.pyplot as plt
f = plt.figure(figsize=(7,5))
ax = f.add_subplot(1,1,1)

# mock your data frame
import pandas as pd
import numpy as np
_df = pd.DataFrame({
"age":np.random.normal(30,30,1000),
"survived":np.random.randint(0,2,1000)
})

# plot
import seaborn as sns
sns.histplot(data=_df, ax=ax, stat="count", multiple="stack",
x="age", kde=False,
palette="pastel", hue="survived",
element="bars", legend=True)
ax.set_title("Seaborn Stacked Histogram")
ax.set_xlabel("Age")
ax.set_ylabel("Count")

enter image description here

关于python - Seaborn 堆叠直方图/条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53899062/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com