Pyplot - 正值和负值的条形图

时间:2014-08-28 13:41:06

标签: graph matplotlib charts plot

我希望负条向下,正向上,x轴(0线)正好在它们之间。我试过这个

chart = fig.bar(x, negative_data, width=35, color='r')
ax2 = plt.gca().twinx()
ax2.bar(x, positive_data, width=35, color='b')

但相反,我得到了合并的红色和白色条纹,两者都朝下。似乎数组negative_data / positive_data仅指定条的高度,但如何指定方向?我需要一些东西来指定每个条形顶部的坐标。

此外,如何使宽度合理,可能是动态的,因为图形会被用户调整大小?

以下是有问题宽度的示例:

x = [250, 1500, 2750, 4250, 6000, 8500, 13200]
negative_data = [0, 0, 0, 0, 0, 0, 0]
positive_data = [3, 0, 0, 0, 1, 0, 0]

我怎样才能让那些看起来很漂亮的情节?

1 个答案:

答案 0 :(得分:23)

您不需要添加双轴,您可以在同一轴上绘制两个条形图,如下所示:

x = range(7)
negative_data = [-1,-4,-3,-2,-6,-2,-8]
positive_data = [4,2,3,1,4,6,7,]

fig = plt.figure()
ax = plt.subplot(111)
ax.bar(x, negative_data, width=1, color='r')
ax.bar(x, positive_data, width=1, color='b')

bar chart with negative an positive y values

宽度为1的条形将填充轴,并在调整大小时随图形缩放。