如何在堆叠条形图中的关键点而不是统一地设置y_ticks?

时间:2019-06-24 20:05:55

标签: python matplotlib

为了方便接收者,我试图仅在条形图分开的位置标记y_ticks,但我无法弄清楚。现在我的代码:

fig = plt.figure()
ax1 = fig.add_subplot(211)
width = 0.3
ind = ['Label_1','Label_2']
y1 = [1000, 950]
y2 = [100, 120]
y3 = [40, 60]
ax1.bar(ind,y1,width = width,color='g',label='Fee_1')
ax1.bar(ind,y2,width=width,bottom=y1,color='orange',label='Fee_2')
ax1.bar(ind,y3,width=width,bottom=[i+j for i,j in zip(y1,y2)],color='brown',label='Fee_3')
ax1.set_yticks(y1+y2+y3)
ax1.set_xlabel('X Axis Labels')
ax1.set_ylabel('Y Axis Labels')
ax1.legend(loc="center")

在绘制此图形时,标签具有y值,但它们不遵循堆叠的条形逻辑。

enter image description here

如果有人可以帮助我弄清楚这个难题,那将会很成功!

1 个答案:

答案 0 :(得分:1)

将列表转换为数组并连接累积和,然后将其设置为y-tick标签。我还用一个数字作为

ax1 = fig.add_subplot(111)

y1 = np.array([1000, 950])
y2 = np.array([100, 120])
y3 = np.array([40, 60])
ax1.bar(ind,y1,width = width,color='g',label='Fee_1')
ax1.bar(ind,y2,width=width,bottom=y1,color='orange',label='Fee_2')
ax1.bar(ind,y3,width=width,bottom=[i+j for i,j in zip(y1,y2)],color='brown',label='Fee_3')
yticks = np.concatenate((y1, y1+y2, y1+y2+y3))
ax1.set_yticks(yticks)

enter image description here