使用Python绘图时出现ValueError

4 投票
2 回答
11539 浏览
提问于 2025-04-16 23:57

我想用matplotlib的绘图方法来画两个数组。要在x轴上绘制的数组有1行128列,也就是形状是[1,128]。而要在y轴上绘制的数组有14行128列,形状是[14,128]。当我尝试使用绘图方法时,出现了这个提示:

ValueError: x and y must have same first dimension

这是我用来绘图的代码。ab就是这两个数组。

line, = plt.plot(b, a, 'bs', markersize=4)

2 个回答

4

这个错误出现的原因是a和b的大小不一样。在上面的例子中,128个x值应该对应128个y值来绘图。

3

你只是把数组搞反了。把它们转置一下,其他的就应该没问题了。

>>> from matplotlib import pyplot as plt
>>> import numpy as np
>>> x = np.array(range(1,129))
>>> y = np.random.rand(14,128)
>>> plt.plot(x, y)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\matplotlib\pyplot.py", line 2286, in plot 
    ret = ax.plot(*args, **kwargs)
  File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 3783, in plot
    for line in self._get_lines(*args, **kwargs):
  File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 317, in _grab_next_args
    for seg in self._plot_args(remaining, kwargs):
  File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 294, in _plot_args
    x, y = self._xy_from_xy(x, y)
  File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 234, in _xy_from_xy
    raise ValueError("x and y must have same first dimension")
ValueError: x and y must have same first dimension
>>> plt.plot(x.T, y.T)
# works

撰写回答