小编Juw*_*ria的帖子

使用python matplotlib获取正负值的堆积条形图

我正在尝试使用python Matplotlib绘制堆积的条形图,并且我要绘制正值和负值。我看过其他文章,谈论如何用正值和负值绘制堆积的条形图,但是他们都没有使用Matplotlib来做,所以我找不到我的解决方案。 带有负JSON数据的 堆积条形图d3.js带有正值和负值的 堆积条形图带有负值的Highcharts垂直堆积条形图,有可能吗?

我已经使用此代码在带有matplotlib的python中绘制堆积的条形图:

import numpy as np
import matplotlib.pyplot as plt
ind = np.arange(3)
a = np.array([4,-6,9])
b = np.array([2,7,1])
c = np.array([3,3,1])
d = np.array([4,0,-3])
p1 = plt.bar(ind, a, 1, color='g')
p2 = plt.bar(ind, b, 1, color='y',bottom=sum([a])) 
p3 = plt.bar(ind, c, 1, color='b', bottom=sum([a, b]))
p4 = plt.bar(ind, d, 1, color='c', bottom=sum([a, b, c]))
plt.show()
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了下图:

在此处输入图片说明

这没有给我正确的结果。有人可以告诉我如何使用其他if语句或以其他方式在堆叠条形图中绘制负值和正值的方法进行编码。

我期望得到如下图所示的结果: 期望图

现在,第一列已正确绘制,因为它具有所有正值,但是当python在第二列上工作时,由于负值,它会混合在一起。查看正值时如何获得正底,绘制其他负值时如何获得负底?

python charts matplotlib negative-number stacked-chart

6
推荐指数
1
解决办法
3658
查看次数