尝试绘制堆积条形图时收到形状不匹配错误消息
Posted
技术标签:
【中文标题】尝试绘制堆积条形图时收到形状不匹配错误消息【英文标题】:Getting a shape mismatch error message when trying to plot a stacked barchart 【发布时间】:2019-06-08 12:36:52 【问题描述】:我正在尝试从我的数据创建堆积条形图并不断收到错误消息
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
【问题讨论】:
yearly_status.values
和yearly_posts.values
的大小不同,但您只使用一个num
(大小为yearly_posts
)。您可能应该将第一次 plt.bar
调用中的 num
更改为 list(yearly_status.index)
@Bart 啊哈,明白了,谢谢
【参考方案1】:
问题是您的两个数据框的编号不相等。这就是为什么num
对两者都不同的原因。解决方案是为num1
和num2
使用不同的索引。此外,您必须将您的值二维数组展平为一维数组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)
【讨论】:
【参考方案2】:如果您确定两个列表对象的长度相等并且仍然收到shape mismatch
错误。您可以在绘图之前将列表对象转换为 numpy 数组。
import numpy as np
numpyObject = np.array(listObject)
【讨论】:
以上是关于尝试绘制堆积条形图时收到形状不匹配错误消息的主要内容,如果未能解决你的问题,请参考以下文章