Python matplotlib散点图甚至x和y抛出错误,表示它们不是

Python matplotlib散点图甚至x和y抛出错误,表示它们不是,python,matplotlib,plot,Python,Matplotlib,Plot,在尝试让基本散点图代码正常工作时,我遇到了很多人谈论的问题: 错误: ValueError:x和y的大小必须相同 然而,我在这里找到的答案似乎并不能解决这个问题。这是密码。谁能看出我做错了什么 数据: import pandas as pd iris = pd.read_csv('../week2/data/iris.csv') iris.head() 产生如下输出: 输出 散点图代码: %matplotlib inline import matplotlib.pyplot as plt

在尝试让基本散点图代码正常工作时,我遇到了很多人谈论的问题:

错误:

ValueError:x和y的大小必须相同

然而,我在这里找到的答案似乎并不能解决这个问题。这是密码。谁能看出我做错了什么

数据:

import pandas as pd
iris = pd.read_csv('../week2/data/iris.csv')
iris.head()
产生如下输出:

输出

散点图代码:

%matplotlib inline
import matplotlib.pyplot as plt

PetalLength = iris['Petal.Length']
PetalWidth = iris['Petal.Width']
plt.rcParams['figure.figsize'] = 8, 6
plt.scatter(iris, PetalWidth, PetalLength)
plt.show
我运行了这段代码来查看错误似乎在说什么,但一切看起来都一样:

print(PetalWidth.shape, PetalLength.shape)
print(type(PetalWidth), type(PetalLength))
print(len(PetalWidth), len(PetalLength))
上述结果如下:

((150L,), (150L,))
(<type 'numpy.ndarray'>, <type 'numpy.ndarray'>)
(150, 150)
((150L,),(150L,)
(, )
(150, 150)

最后的细节,以防这有所帮助。我试着根据我找到的堆栈溢出帖子将PetalWidth和PetalLength转换为列表,但也没用。如果您能给我提供任何帮助,我将不胜感激。

这篇文章上的评论似乎包含了答案。虽然某些绘图类型需要传入一个数据集,然后
x
y
是数据集中的字段,但散点只接受
x
y
参数,其中x和y是包含数据的等长数组。抛出错误的可能性最大,因为在您的示例中,整个数据集被视为
x
,然后第二个参数(您认为是
x
)被视为
y
。在这种比较中,触发错误的是整个数据集的形状

删除第一个参数(对于数据集)并查看问题是否消失


对于将来偶然发现这篇文章的其他人来说,堆栈溢出上的其他人在传入
x
y
时遇到了这个错误,其中
x
y
不是数组。甚至有一个帖子,有人通过将
x
y
转换为列表来解决问题,但这可能不是推荐的解决方案。最后,如果数组,
x
y
不包含相同数量的值(因此具有相同的长度),那么肯定会发生此错误。

为什么要将
iris
作为
分散
的参数?尝试删除此参数。
scatter
函数期望前两个参数是具有相同大小的
x
y
数组(请参阅)。我已经查看了几个不同的示例。在某些情况下,您传入数据集,然后声明x和y,但在本例中,您是对的。X和Y是数据。真不敢相信我错过了这个。谢谢