【问题标题】:fill_between gives "ValueError: Argument dimensions are incompatible"fill_between 给出“ValueError:参数尺寸不兼容”
【发布时间】:2013-08-21 03:48:08
【问题描述】:

以下用 Python 编写的代码将数据从 Excel 导入 Python,然后使用 matplotlib 绘图。我正在尝试使用 fill_between 函数在第 80 行上方和下方填充不同的颜色,但它给出了

ValueError: Argument dimensions are incompatible

注意:Excel 文件 ('eegg.xlsx') 有 4 列,682 行,包含 int 数据 (0-100)。

我认为问题出在fill_between 调用的where 参数上,但我无法解决这个问题。

import xlrd
import numpy
from datetime import time
from pylab import *

workbook = xlrd.open_workbook('eegg.xlsx')
worksheet = workbook.sheet_by_name('Sayfa1')
num_rows = worksheet.nrows - 1
num_cells = worksheet.ncols - 1
curr_row = -1

att=[]
med=[]
for i in [2,3]:
    kolon = worksheet.col(i)
    for x in kolon[1:]:
        d= int(x.value)
        if i==2:
            att.append(d)
        elif i==3:
            med.append(d)

n = len(att)
X = np.linspace(0,n,n,endpoint=True)
Y1 = att
plot(X, Y1, color='blue', alpha=1.00)
fill_between(X, 0, Y1, (Y1) > 80, color='red', alpha=.25)
fill_between(X, 0, Y1, (Y1) < 80, color='blue', alpha=.25)
xlim(0,n), xticks([])
ylim(0,110), yticks([])

【问题讨论】:

  • 你能打印出XY1的形状吗?做print X.shape, Y1.shape.
  • 虽然知道所引发的错误类型可能有助于我们解决问题,但如果您发布完整的回溯容易容易,因为这告诉我们在哪里引发了错误。

标签: python-2.7 matplotlib xlrd


【解决方案1】:

确保将 X 和 Y1 转换为 pandas.core.series.Series。那应该可以解决问题。您可以通过以下方式检查类型:

type(X)
type(Y1)

如果两者都返回“pandas.core.series.Series”,那么它应该可以工作。

仅作说明,如果 X、Y 是数据帧,则尝试以下操作:

X = X.iloc[:,0]  # NEW
Y = Y.iloc[:,0]  # NEW

【讨论】:

    【解决方案2】:

    似乎参数 color 和 alpha 需要作为 color =...,alpha=... 传递。

    正确:ax.fill_between(x, y_min, y_max,color = color, alpha=0.1)

    错误:ax.fill_between(x, y_min, y_max,color, alpha=0.1)

    【讨论】:

    • 是的,这是我的问题。不过,大多数其他matplotlib 函数都明确指出了这个确切的错误。此异常是意外的。
    【解决方案3】:

    您收到此错误是因为 Y1list,而不是 numpy.array,因此 (Y1) &gt; 80(Y1) &lt; 80 每个返回一个 bool,而不是它们的数组,因为 kwarg @ 987654327@接受。

    所以换行

    Y1 = att
    

    Y1 = array(att)
    

    应该能解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多