Python 绘图时进行Matplotlib绘图

Python 绘图时进行Matplotlib绘图,python,python-3.x,matplotlib,Python,Python 3.x,Matplotlib,请参阅matplotlib绘图代码,但有时会出现以下错误 if np.any(harmonics == 1) or np.any(harmonics == -1): for j in range (0,len(harmonics)): if harmonics[j] == 1 or harmonics[j]==-1: pats+=1 sense = 'Bearish ' if harmon

请参阅matplotlib绘图代码,但有时会出现以下错误

  if np.any(harmonics == 1) or np.any(harmonics == -1):
        for j in range (0,len(harmonics)):
            if harmonics[j] == 1 or harmonics[j]==-1:
                pats+=1
                sense = 'Bearish ' if harmonics[j]==-1 else 'Bullish '
                label = sense + labels[j] + ' found' 
                print(label)
                plt.title(label)
                plt.plot(np.arange(start,i+15),price.values[start:i+15])
                plt.scatter(current_idx,current_pat,c='r')
                filename = str(uuid.uuid1())[:8]
                print(filename)
                plt.savefig(filename)
                plt.close(filename)
                plt.show()
跟踪错误,当我使用相同的代码输入大量数据时,它正在工作,但如果使用较少的数据,则同样失败

Traceback (most recent call last):
  File "peaks_vis-san.py", line 99, in <module>
    plt.plot(np.arange(start,i+15),price.values[start:i+15])
  File "/usr/local/lib64/python3.6/site-packages/matplotlib/pyplot.py", line 2763, in plot
    is not None else {}), **kwargs)
  File "/usr/local/lib64/python3.6/site-packages/matplotlib/axes/_axes.py", line 1646, in plot
    lines = [*self._get_lines(*args, data=data, **kwargs)]
  File "/usr/local/lib64/python3.6/site-packages/matplotlib/axes/_base.py", line 216, in __call__
    yield from self._plot_args(this, kwargs)
  File "/usr/local/lib64/python3.6/site-packages/matplotlib/axes/_base.py", line 342, in _plot_args
    raise ValueError(f"x and y must have same first dimension, but "
ValueError: x and y must have same first dimension, but have shapes (41,) and (34,)
回溯(最近一次呼叫最后一次):
文件“peaks_vis-san.py”,第99行,在
plt.plot(np.arange(开始,i+15),price.values[开始:i+15])
文件“/usr/local/lib64/python3.6/site packages/matplotlib/pyplot.py”,第2763行,在plot中
不是别的{},**kwargs)
文件“/usr/local/lib64/python3.6/site packages/matplotlib/axes/_axes.py”,第1646行,在绘图中
行=[*self.\u获取行(*args,data=data,**kwargs)]
文件“/usr/local/lib64/python3.6/site packages/matplotlib/axes/_base.py”,第216行,在调用中__
从自身获得的收益。_plot_args(本,kwargs)
文件“/usr/local/lib64/python3.6/site packages/matplotlib/axes/_base.py”,第342行,位于绘图参数中
提升值错误(f“x和y必须具有相同的第一个尺寸,但”
ValueError:x和y必须具有相同的第一维度,但具有形状(41,)和(34,)

所以我认为当你使用较少的数据集时,你代码中的“值”列表的长度就不够了

plt.plot(np.arange(start,i+15),price.values[start:i+15])
price.values列表在i+15之前没有索引,python不会引发错误 这里假设你想要列表中给出的值, 例如

list = [1,2,3,4]
print(list[0:10])
你会得到这样的输出

[1, 2, 3, 4]
因此,要绘制的x,y值的长度不同,matplotlib.plot不接受这一点,为了解决这个问题,可以对x值进行此操作

np.arange(start,min(len(price.values), i + 15))
但是要注意,如果在ur代码中的任何一个pt处,值的长度预计为i+15,那么它可能会中断
希望它能帮助您

请确保您发布的任何代码都能正确运行。目前,您从未定义迭代变量
i
,因此代码将失败。但是,我可以告诉您,您看到的错误意味着您正试图绘制两个不同大小的数组。
plt.plot
需要大小相同的数组由于您似乎对堆栈溢出不熟悉,请阅读