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

时间:2017-03-30 05:40:26

标签: 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

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)

最终细节以防万一。我尝试将PetalWidth和PetalLength转换为基于我发现的Stack Overflow帖子的列表,但这也没有帮助。任何帮助我使这个代码工作的指导将不胜感激。

1 个答案:

答案 0 :(得分:1)

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

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

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