python - 如何以百分比表示堆积条形图整数值

标签 python bar-chart percentage stacked

请帮忙,

A、B、C为列

X、Y、Z、Q、R 是我的索引值

我想在 python(matplot lib)中制作一个堆积条形图,它计算每个市场每个 OUT_CAUSE 的标准化百分比值并在图表中表示。

 OUT_CAUSE  A   B   C   
 MARKET                                             
 X  12.0    11.0    4.0
 Y  9.0     12.0    3.0
 Z  16.0    40.0    1.0
 Q  23.0    19.0    3.0
 R  17.0    15.0    2.0

绘图的 X 轴应为 MARKET 图表的 Y 轴应该是 OUT_CAUSE 对每个市场的贡献百分比。

% 的总和应等于 100


我用它来表示直接数字

df(kind='bar', stacked=True ,figsize=(8, 8));

最佳答案

你可以有一个循环来为所有列创建 %age:

for colname in df.columns: 
    colsum = sum(df[colname])
    df[colname+'%'] = round(100*df[colname]/colsum,1)  # create new column for %ages

输出:

      A     B    C    A%    B%    C%
X  12.0  11.0  4.0  15.6  11.3  30.8
Y   9.0  12.0  3.0  11.7  12.4  23.1
Z  16.0  40.0  1.0  20.8  41.2   7.7
Q  23.0  19.0  3.0  29.9  19.6  23.1
R  17.0  15.0  2.0  22.1  15.5  15.4

然后您可以使用以下命令来创建堆积条形图:

df.iloc[:,3:].T.plot.bar(stacked=True, rot=0)
plt.show()

enter image description here

如果你不能计算列数,你可以通过%字符过滤掉列名:

colnames = list(filter(lambda x: '%' in x, df.columns.tolist()))
df[colnames].T.plot.bar(stacked=True, rot=0)
plt.show()

关于python - 如何以百分比表示堆积条形图整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62336241/

相关文章:

c++ - 如何使用 Blackberry 10 Native 方法生成条形图

css - 将 Div TOP 位置设置为浏览器宽度的百分比(按宽度定义高度位置)

mysql - 如何使用 MySQL 查找百分比?

python - numpy rearray 的花哨索引在分配后丢失了引用

python - 我可以在Python中离线使用plotly图形工厂吗?

python - 如何使用 Plotly 绘制 3D 条形图/饼图/圆环图

html - 当没有设置正文的宽度时,如何使用标题的百分比

python - 使用 OpenCV 或 Pyzbar 读取 QR 码时出现问题

python - 访问 Numpy 数组的列?尝试通过转置或通过列访问来执行的错误

python - 带有类别的 pyplot 条形图