在 Pandas 中 matplotlib 交叉表的堆积条形图中显示 100 的百分比

玛丽10

我需要帮助在从数据框中的交叉表创建的 Pandas 中的堆积条形图的每个部分中添加总数(无小数)的百分比分布。

这是示例数据:

data = {
    'Name':['Alisa','Bobby','Bobby','Alisa','Bobby','Alisa',
            'Alisa','Bobby','Bobby','Alisa','Bobby','Alisa'],
    'Exam':['Semester 1','Semester 1','Semester 1','Semester 1','Semester 1','Semester 1',
            'Semester 2','Semester 2','Semester 2','Semester 2','Semester 2','Semester 2'],

    'Subject':['Mathematics','Mathematics','English','English','Science','Science',
               'Mathematics','Mathematics','English','English','Science','Science'],
   'Result':['Pass','Pass','Fail','Pass','Fail','Pass','Pass','Fail','Fail','Pass','Pass','Fail']}
df = pd.DataFrame(data)
df

这是我的代码:

#crosstab
pal = ["royalblue", "dodgerblue", "lightskyblue", "lightblue"]
ax= pd.crosstab(df['Name'], df['Subject']).apply(lambda r: r/r.sum()*100, axis=1)
ax.plot.bar(figsize=(10,10),stacked=True, rot=0,colors=pal)
display(ax)

plt.legend(loc='top', bbox_to_anchor=(0.1, 1.0),title="Subject",)

plt.xlabel('Name')
plt.ylabel('Percent Distribution')

plt.show()

我知道我需要以某种方式添加 plt.text,但无法弄清楚。我希望将总数的百分比嵌入到堆叠条中。感谢您提前提供任何建议!

斯科特·波士顿

咱们试试吧:

# crosstab
pal = ["royalblue", "dodgerblue", "lightskyblue", "lightblue"]
ax= pd.crosstab(df['Name'], df['Subject']).apply(lambda r: r/r.sum()*100, axis=1)
ax_1 = ax.plot.bar(figsize=(10,10),stacked=True, rot=0, colors=pal)
display(ax)

plt.legend(loc='upper center', bbox_to_anchor=(0.1, 1.0), title="Subject")

plt.xlabel('Name')
plt.ylabel('Percent Distribution')

for rec in ax_1.patches:
    height = rec.get_height()
    ax_1.text(rec.get_x() + rec.get_width() / 2, 
              rec.get_y() + height / 2,
              "{:.0f}%".format(height),
              ha='center', 
              va='bottom')

plt.show()

输出:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在matplotlib中的条形图上方显示百分比

matplotlib饼图中的百分比标签位置

matplotlib / pandas中是否有一个参数可以将直方图的Y轴表示为百分比?

matplotlib / pandas中是否有一个参数可以将直方图的Y轴表示为百分比?

使用ggplot在R中创建堆积百分比条形图

在堆积的条形图Google图表中显示百分比

计算pandas DataFrame中的行百分比?

有没有办法在Altair标准化堆积条形图中显示百分比(0-100%)?

获取基于Pandas中groupby的百分比?

显示反应中的负载百分比

计算百分比仅显示100 perc PostgreSQL

如何在Matplotlib中的堆栈百分比条形图上添加注释?

在数据框中绘制条形图时显示百分比时出错

显示类别相对于Chart.js中堆积条形的百分比

有没有办法在Quickbase中显示堆叠条形图中的数量和百分比?

在值轴条形图JfreeChart上使用百分比时,值乘以100

在dimple.js垂直100%条形图中获取正确的百分比

如何控制预测表中的百分比不超过 100%?

如何在excel中的简单条形图中添加百分比。数据是单元格中的一系列字符串,我希望条形图显示百分比而不是计数

堆积条作为整个 matplotlib 与字典的百分比

Matplotlib 饼图:显示值和百分比

ggplot2 中按组显示的百分比条形图

带有百分比计算的 Pandas 交叉表

ggplot2 中多面填充条形图中的标签百分比

在 R 中绘制百分比堆积条形图

PYTHON - 在来自熊猫 matplotlib 的交叉表的堆叠水平条形图中显示 100 的百分比

pandas-计算特定组中的百分比

如何在chartjs中显示百分比符号?

在 R 中按比例或百分比对堆积条形图进行排序