【问题标题】:Unexpected value error using fill_between function of matplotlib使用 matplotlib 的 fill_between 函数出现意外值错误
【发布时间】:2020-11-05 21:31:36
【问题描述】:

我编写了一个简单的代码,绘制了两行。然后我尝试使用 fill_between 填充它们之间的区域,但我得到了这个我不明白的奇怪错误:

文件“C:\Python27\lib\site-packages\matplotlib\axes_axes.py”,第 5101 行,在 fill_between '不是一维的。') ValueError:传入参数“u'x'”的输入不是一维的。

这是我的代码示例,其中 q、DelTheta5、DelTheta50、DelTheta95 分别是相同维度和大小的 np 个数组,

import matplotlib.pyplot as plt 
plt.figure(1)
#fig1, ax1 = plt.subplots()
plt.plot(q, DelTheta5, linewidth=2, linestyle='dashed', color='black')
plt.plot(q ,DelTheta50, linewidth=2, color='black')
plt.plot(q, DelTheta95, linewidth=2, linestyle='dotted', color='black')
plt.fill_between(q, DelTheta5, DelTheta95)

我可以让它与我在网上找到的使用随机数据的不同示例一起工作。但是上面的数据和代码 sn-p 对我不起作用(语法对我来说是正确的)。有人知道这个 ValueError 的来源吗?我的数据数组很干净(所有元素都是浮点数)。我正在使用 python 2.7.18。

感谢您的帮助

【问题讨论】:

  • 语法没有问题。您可以使用minimal working example 复制它并与我们分享吗?
  • 另外,您是否检查了数组的形状,并使用np.squeeze 压缩了任何单一维度?
  • 看起来 np.squeeze 成功了!!我的数组是从 .mat 文件中导入的,所以肯定有一些额外的维度。我一直在尝试几种重新调整数组大小的方法,但它们没有奏效。这个 np.squeeze 函数虽然有效!太感谢了!如果您将评论写为答案,我会接受。

标签: python matplotlib plot


【解决方案1】:

@Leonard 的评论完全正确。我需要使用 np.squeeze,因为我的数据数组中有一个额外的维度:即它们是列向量 [],但它们周围有一个额外的 ([])。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    相关资源
    最近更新 更多