尝试绘制堆积的条形图时出现形状不匹配错误消息

时间:2019-01-14 13:59:35

标签: python matplotlib data-science

我正在尝试根据数据创建堆叠的条形图,并不断收到错误消息

  

ValueError:形状不匹配:无法将对象广播到单个对象   形状

这是我编写的相关代码:

num = list(yearly_posts.index)
barWidth = 0.50
plt.bar(num,yearly_status.values, color='#b5ffb9',edgecolor='white',width=barWidth)
plt.bar(num,yearly_posts.values, color='#f9bc86',edgecolor='white',width=barWidth)

这是我的数据示例

#yearly_status table
year
2009     85
2010     86
2011    188
2012    274
2013    240
2014    171
2015    132
2016     22
2017     18
2018     13
dtype: int64

#yearly_posts table
year
2009     8
2010    19
2013    19
2014    40
2015    13
2016    20
2017    27
2018    17
dtype: int64

2 个答案:

答案 0 :(得分:1)

问题是两个数据框的编号不相等。条目的数量,这就是num两者不同的原因。解决方案是对num1num2使用不同的索引。此外,您必须将值2d数组展平为yearly_status.values.flatten()

的1-d数组
num1 = list(yearly_status.index)
num2 = list(yearly_posts.index)
barWidth = 0.50
plt.bar(num1, yearly_status.values.flatten(), color='#b5ffb9',edgecolor='white',width=barWidth)
plt.bar(num2, yearly_posts.values.flatten(), color='#f9bc86',edgecolor='white',width=barWidth)

enter image description here

答案 1 :(得分:0)

如果您确定两个列表对象的长度相等,并且仍然出现shape mismatch错误。您可以在绘制之前将列表对象转换为numpy数组。

import numpy as np
numpyObject = np.array(listObject)