J'essaie d'exécuter un bloc-notes Python ( lien ). À la ligne Dans [18]:
où l'auteur trace certaines données en utilisant Seaborn
, j'obtiens une erreur
ValueError: l'argument 'c' a 12 éléments, ce qui n'est pas acceptable pour une utilisation avec 'x' avec la taille 0, 'y' avec la taille 0.
Dans [18]:
import pickle import seaborn as sns # seaborn==0.9.0 with open('train_store', 'rb') as f: train_store = pickle.load(f) c = '#386B7F' # basic color for plots # sales trends sns.factorplot(data = train_store, x = 'Month', y = "Sales", col = 'StoreType', # per store type in cols palette = 'plasma', hue = 'StoreType', row = 'Promo', # per promo in the store in rows color = c)
Version Seaborn:
seaborn==0.9.0
J'ai regardé le Web à propos de cette erreur mais je n'ai rien trouvé d'utile. Veuillez me guider dans la bonne direction.
Mise à jour
Voici le code minimal pour les tests
import seaborn as sns # sales trends sns.factorplot(data = train_store, x = 'Month', y = "Sales", col = 'StoreType', # per store type in cols palette = 'plasma', hue = 'StoreType', row = 'Promo', # per promo in the store in rows color = c)
Lien vers le fichier de données train_store: Lien 1 p>
3 Réponses :
Ceci est un changement apporté avec la version 0.9.0.
Dans cette version, factorplot est obsolète (implicitement) et le nouveau catplot (category plot) a été implémenté. Vous pouvez toujours utiliser factorplot dans votre code, mais en interne il invoquera catplot avec les arguments pertinents.
Dans l'implémentation catplot, nous ne pouvons pas avoir 'hue' et 'col' ou 'hue' et 'row' comme mêmes champs de données lorsque vous utilisez le genre 'point' (ligne avec des points représentant la valeur moyenne pour le groupe).
Par conséquent, vous pouvez changer votre code pour l'une des options suivantes:
option 1:
sns.factorplot(data = train_store, x = 'Month', y = "Sales",col = 'Promo',hue = 'StoreType')
option 2:
sns.catplot(x="Month", y="Sales", hue="StoreType",col="Promo", kind="point", data=train_store)
J'ai dû apporter les modifications suivantes afin de résoudre le problème
sns.factorplot(data = train_store, x = 'Month', y = "Sales", row = 'Promo', # per promo in the store in rows col = 'StoreType' # per store type in cols )
J'ai fait ce changement simple et j'ai obtenu les tracés souhaités
sns.factorplot(data = train_store, x = 'DayOfWeek', y = "Sales", col = 'Promo', row = 'Promo2')
Je viens de supprimer les paramètres de teinte et de palette.
Pouvez-vous créer un exemple reproductible minimal ?
Quelle serait la sortie si vous omettez
color = c
? Le problème sous-jacent peut être # 14113 , mais il n'y aura probablement pas de solution avant le prochain la version seaborn apparaît.@DavidG Bonjour, j'ai créé le code minimal pour tester, vous pouvez vérifier la question mise à jour pour plus de détails
@ImportanceOfBeingErnest Bonjour, j'ai essayé de supprimer
color = c
mais la même erreur apparaît toujours