我正在尝试根据数据创建堆叠的条形图,并不断收到错误消息
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
答案 0 :(得分:1)
问题是两个数据框的编号不相等。条目的数量,这就是num
两者不同的原因。解决方案是对num1
和num2
使用不同的索引。此外,您必须将值2d数组展平为yearly_status.values.flatten()
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)
答案 1 :(得分:0)
如果您确定两个列表对象的长度相等,并且仍然出现shape mismatch
错误。您可以在绘制之前将列表对象转换为numpy数组。
import numpy as np
numpyObject = np.array(listObject)