如何在matplotlib中使用混合的+ve和ve值绘制100%堆积条形图?

2024-10-03 02:39:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些数据是正负混合的,每个变量的绝对值之和=100% 以下是一些示例数据:

Out01 = [79.069,-1.602,5.067,-4.241,-5.433,-4.590]
Out02 = [50.348,13.944,-15.373,6.554,5.541,8.240]
Out03 = [-8.053,0.819,-9.741,2.814,22.475,56.098]
Out04 = [-17.350,33.710,-18.510,-0.842,3.050,26.537]
Out05 = [-20.169,37.583,-20.785,-2.041,1.728,17.695]

我在Microsoft Excel中根据需要绘制了“100%堆积列”图表: I drew them as desired in Microsoft Excel as follows by the "100% stacked columns" chart: 现在我想通过matplotlib库在python中绘制类似的图表。在

我怎么能做到呢?在


Tags: 数据示例matplotlib图表绘制excelmicrosoftout04
1条回答
网友
1楼 · 发布于 2024-10-03 02:39:09

最后,我得到了答案, 当我跟随the example in matplotlib page时,它包含bottom关键字,该关键字指定每个样本数据相对于前一个样本数据的升幅。在

p2 = plt.bar(ind, womenMeans, width, color='y', bottom=menMeans, yerr=womenStd)

例如,如果我们想像示例中那样绘制男性和女性数据,我们从得分为20的男性开始(在G1系列中),然后绘制女性,他们开始绘制值为25的值底部值为20。 为了扩展这一点,如果我们添加了另一个类别,比如儿童,分数为15,那么它应该绘制成底部的=20+25=45。等等

对于负值,我们有一个问题,它们的增长方向与正值相反。所以它应该从bottom=0开始,然后独立地从正值或负值之和的最大值开始。 以一个例子来理解这一点,如果我们想画出一个系列,如以下所示:(20,25,-15,30,-10,-5,17,3,-28) 每个值的底部应该如下(0,20,0,45,-15,-25,75,92,-30)为什么?在

对于20个,我们只是开始绘图,所以,不需要底部。 对于25人,我们需要增加20人。 对于-15,它是第一个负值,因此它必须绘制在没有底值的轴下方,因此底部=0 对于30,它应该提高20+25=45 对于-10,它应该从之前的负值-15开始 对于下一个-5,它应该从-10+-15=-25开始 等等。。。在

^{pr2}$

包含数据和所有辅助函数的完整示例is uploaded on my Git page。在

相关问题 更多 >