1
votes

Problème lors de l'utilisation de la méthode factorielle de Seaborn

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>


4 commentaires

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


3 Réponses :


2
votes

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)


0 commentaires

0
votes

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
               )


0 commentaires

0
votes

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.


0 commentaires