matplotlib 每个条柱的堆叠百分比直方图

lg40wkob  于 2023-02-23  发布在  其他
关注(0)|答案(1)|浏览(178)

我试图绘制一个直方图与类的比例(0/1)为每个箱。
我已经绘制了一个带有堆叠百分比的条形图(如下图所示),但它看起来并不像我想要的那样。
堆叠百分比条形图

我想要这样的代码(它在this post上,但是用R编写,我想要用python编写),如果可能的话,使用seaborn库:
堆叠百分比历史图

我的数据集非常简单,它包含一个年龄列和另一个分类列(0/1):

df.head()

[数据集

disho6za

disho6za1#

对于seaborn,您可以使用sns.histplot(..., multiple='fill')
下面是一个从titanic数据集开始的示例:

from matplotlib import pyplot as plt
from matplotlib.ticker import PercentFormatter
import seaborn as sns
import numpy as np

titanic = sns.load_dataset('titanic')
ax = sns.histplot(data=titanic, x='age', hue='alive', multiple='fill', bins=np.arange(0, 91, 10), palette='spring')
for bars in ax.containers:
    heights = [b.get_height() for b in bars]
    labels = [f'{h * 100:.1f}%' if h > 0.001 else '' for h in heights]
    ax.bar_label(bars, labels=labels, label_type='center')
ax.yaxis.set_major_formatter(PercentFormatter(1))
ax.set_ylabel('Percentage of age group')
plt.tight_layout()
plt.show()

相关问题