2 votes

matplotlib scatter plot even x and y throw error that says they are not

En essayant de faire fonctionner un code de diagramme de dispersion de base, j'ai rencontré le problème dont on parle tant :

Erreur :

ValueError : x et y doivent avoir la même taille.

Et pourtant, les réponses que je trouve ici ne semblent pas résoudre ce problème. Voici le code. Quelqu'un peut-il trouver ce que je fais mal ?

Les données :

import pandas as pd
iris = pd.read_csv('../week2/data/iris.csv')
iris.head()

produit un résultat comme celui-ci :

sortie

Code du nuage de points :

%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

J'ai exécuté ce code pour vérifier ce que l'erreur semblait dire, mais tout semble identique :

print(PetalWidth.shape, PetalLength.shape)
print(type(PetalWidth), type(PetalLength))
print(len(PetalWidth), len(PetalLength))

Au-dessus des sorties, ceci :

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

Derniers détails au cas où cela aiderait. J'ai essayé de convertir PetalWidth et PetalLength en listes en me basant sur un post de Stack Overflow que j'ai trouvé mais cela n'a pas aidé non plus. Tout conseil pour m'aider à faire fonctionner ce code serait apprécié.

1voto

TMWP Points 777

Les commentaires sur cet article semblent contenir la réponse. Alors que certains types de tracés requièrent l'entrée d'un ensemble de données, puis l'entrée d'un ensemble de données. x y y sont des champs dans l'ensemble de données, la diffusion prend juste x y y où x et y sont des tableaux de longueur égale qui contiennent les données. L'erreur est probablement provoquée par le fait que l'ensemble des données est traité comme étant x dans votre exemple, et ensuite le deuxième argument (que vous pensiez être x ) est traité comme y . Dans cette comparaison, c'est la forme de l'ensemble des données qui déclenche l'erreur.

Supprimez le premier argument (pour l'ensemble de données) et voyez si le problème disparaît.

Pour ceux qui tomberont sur cet article à l'avenir, d'autres personnes sur Stack Overflow ont rencontré cette erreur lors de la transmission de l'information. x y y donde x y y n'étaient pas des tableaux. Il y a même un post où quelqu'un a résolu le problème en convertissant x y y en listes, mais ce n'est probablement pas la solution recommandée. Enfin, si les tableaux, x y y ne contiennent pas le même nombre de valeurs (et ont donc la même longueur), cette erreur se produira certainement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X