python ValueError safezip:数据和错误数据的长度不同?

python ValueError safezip: different length of data and errordata?

我试图在 python 中绘制一些带有错误条的数据,但不断收到以下错误消息:

  (21,) (21,) (2, 21) (21,)
  Traceback (most recent call last):
  File "q_profil.py", line 104, in <module>
ax.errorbar(qmean,np.arange(-5,5.5,0.5),'.-') #np.array([qstdev,qstdev]
 File "/usr/lib64/python2.7/site-packages/matplotlib/axes.py", line 5547, in errorbar
in cbook.safezip(y,yerr[0])]
 File "/usr/lib64/python2.7/site-packages/matplotlib/cbook.py", line 1225, in safezip
raise ValueError(_safezip_msg % (Nx, i + 1, len(arg)))
ValueError: In safezip, len(args[0])=21 but len(args[1])=1

代码:

  qmean = np.mean(qn,axis=1)*1e03
  qstdev = np.std(qn,axis=1)*1e03
  xerr=[qstdev,qstdev]
  print qmean.shape, qstdev.shape, np.shape(xerr),np.arange(-5,5.5,0.5).shape

  fig = plt.figure()
  ax = fig.add_subplot(111)
  ax.errorbar(qmean,np.arange(-5,5.5,0.5),'.-',xerr=[qstdev,qstdev])

我也试过了

  ax.errorbar(qmean,np.arange(-5,5.5,0.5),'.-',xerr=qstdev)

  ax.errorbar(qmean,np.arange(-5,5.5,0.5),'.-',xerr=np.array([qstdev,qstdev]))

总是出现同样的错误。甚至 xerr=None 让我得到了这个。

如您所见,我打印了第一行的 qmean(我的数据)、qstdev(错误数据数组的大小)和范围数组(从 -5 到 5.5 排列)的形状在第一个代码块中。

对于

  ax.errorbar(qmean,np.arange(-5,5.5,0.5),'.-',xerr=xerr)

我收到 len(args[1])=2 的错误

有人建议尝试什么吗?在网上找不到任何有用的提示。通常用户使用我正在使用的完全相同的代码来解决他们的问题。我想知道这个错误,因为我的数据形状似乎是正确的。

知道了! "errorbar" 不接受绘图格式作为非关键字参数

ax.errorbar(qmean, np.arange(-5, 5.5, 0.5), '.-')

而是想要关键字参数

ax.errorbar(qmean, np.arange(-5,5.5,0.5), xerr=[qstdev,qstdev], fmt='.-')