Ceci est une question de suivi de ce Solution . Il y a une affectation automatique de différentes couleurs lorsque Il existe un problème connecté ici . Y a-t-il une solution de contournement simple pour cela? P> Mise à jour: strong> P> Lorsque j'essaie la solution recommandée par @importanceObEingNest pour un Ça jette une erreur suivante, P> ValueRorror: argument RGBA invalide: 'Oui' P>
Lors de la manipulation de l'exception ci-dessus, une autre exception s'est produite: P>
blockQuote> p> type = ligne code> mais pour la parcelle de dispersion qui n'est pas le cas. étiquette code> Colonne avec des chaînes, sa ne fonctionne pas! p>
3 Réponses :
IIUC Vous pouvez utiliser sortie: p> sns code> à cet effet:
Vous pouvez boucler sur groupby code> et créer une dispersion par groupe. C'est efficace pour moins de 10 catégories. import pandas as pd
import matplotlib.pylab as plt
import numpy as np
# random df
df = pd.DataFrame(np.random.randint(0,10,size=(5, 2)), columns=['x','y'])
df['label'] = ['yes','no','yes','yes','no']
# plot groupby results on the same canvas
fig, ax = plt.subplots(figsize=(8,6))
u, df["label_num"] = np.unique(df["label"], return_inverse=True)
sc = ax.scatter(x = "x", y = "y", c = "label_num", data=df)
ax.legend(sc.legend_elements()[0], u, title="Label")
plt.show()
Lorsque j'ai essayé votre deuxième solution, il donne `AttributeError: 'PathCollection' Object n'a aucun attribut 'Legend_elements'` cette erreur, pouvez-vous vérifier?
Oui, Legend_elements CODE> est une fonction J'ai introduit uniquement récemment. Vous avez besoin de matplotlib 3.1 pour cela.
Ohh. Génial !!! Je vais mettre à jour le mien. Merci beaucoup pour vos contributions aux outils open source :)
Êtes-vous limité à Matplotlib? Sinon, essayez de regarder
marborais code> Il s'agit d'une enveloppe autour de MPL et réduit le code de la chaudron (et les données de données sont des citoyens de première classe)Qu'en est-il de
AX.SCATRATTER (x = "XCOORD", y = "ycoord", c = 'projid', data = df) code>?Semble fonctionner, merci! Mais pourquoi
pd.groupby.plot () code> ne fonctionne pas pour cela? Y a-t-il une solution pour ça?@ImportuceObeingernest, si la colonne "Étiquette" est la chaîne, la solution recommandée ne fonctionne pas
@Marvintaschenberger, si la solution utilise
matplotlib code>, alors c'est génial mais je voudrais certainement connaître d'autres solutions également.Oui, Matplotlib ne comprend pas les couleurs "catégoriques". Il existe d'autres options bien sûr, comme Créer une nouvelle colonne avec des cordes mappées sur des chiffres ou une boucle sur DF.Groupby et créez des dispersions individuelles