无法制作错误图 [值错误:解包的值太多(预期 1)]
Posted
技术标签:
【中文标题】无法制作错误图 [值错误:解包的值太多(预期 1)]【英文标题】:Unable to make a error plot [Value error:too many values to unpack (expect 1)] 【发布时间】:2020-05-10 05:06:20 【问题描述】:代码:
E,=plt.plot(bl,semullts_mean,color='b',marker='o',label='Sequential')
F,=plt.plot(bl,semulltr_mean,color='c',marker='o',label='Random')
legend3 = plt.legend(handles=[E,F]) #(CORRECT)
K,=pylab.errorbar(bl,semullts_mean,yerr=semulltr_std,ecolor='m',color='g',marker='o',label='Sequential')
L,=pylab.errorbar(x=bl,y=semulltr_mean,yerr=semulltr_std,ecolor='y',color='g',marker='o',label='Random') #(ERROR)
这是我的代码中显示的错误日志
ValueError Traceback (most recent call last)
<ipython-input-8-21aefb184d1d> in <module>()
190 #semulbwr_std=np.reshape(semulbwr_std, (semulbwr_std.shape[0], ))
191
--> 192
K,=pylab.errorbar(bl,semullts_mean,yerr=semulltr_std,ecolor='m',color='g',marker='o',label='Sequential')
193
L,=pylab.errorbar(x=bl,y=semulltr_mean,yerr=semulltr_std,ecolor='y',color='g',marker='o',label='Random')
194 legend5 = pylab.legend(handles=[K,L])
#(ERROR LOGS)
ValueError: too many values to unpack (expected 1)
原来如此。我不知道为什么我不能使用可用于创建绘图的变量创建错误栏 前两行是正确的,它能够生成情节。但是当我使用相同的变量来生成错误栏时。它不断发布此错误。而且没找到好办法解决
我正在使用 matplotlib。 bl、semulltr_mean 和 semulltr_std 等是具有 11 个元素的列表。例如,[1,2,3,4,5,6,7,8,9,10,11]。它们都含有相同数量的元素。不知道是什么原因造成的这个问题
【问题讨论】:
我已经使用 numpy 将其转换为 numpy.array。但它似乎不起作用 顺便说一句,pylab模块的使用是not recommended,你应该改用matplotlib.pyplot.errorbar()
这两个模块有什么区别?
在提供的链接中有解释。 pylab 应该可以帮助人们从 MATLAB 过渡,但我猜维护者认为它不再需要
【参考方案1】:
去掉K
和l
之后的逗号
K,=pylab.errorbar(...
^
|
应该是
K = pylab.errorbar(...
根据the documentation,errorbar()
返回一个容器对象,该对象本身包含 3 个对象(绘图线、顶线和条线)。因此,您不能将其解压缩到 1 元素元组中。要么将容器存储在单个变量中,要么将容器的内容解压到 3 个变量中。
这也有效:
line,caplines,barlines = pylab.errorbar(...
【讨论】:
以上是关于无法制作错误图 [值错误:解包的值太多(预期 1)]的主要内容,如果未能解决你的问题,请参考以下文章
Tensorboard - ValueError:解包的值太多(预期 2)
如何修复:ValueError:解包的值太多(预期为 2)PCA
当数组中元素的 len 大于 2 时,“解包的值太多(预期为 2)”
Itertools 产品 ValueError:解包的值太多(预期为 2)