J'ai créé un nuage de points avec 3 couleurs différentes et je veux faire correspondre la couleur du symbole et du texte dans la légende.matplotlib: faire correspondre la couleur du texte de la légende avec le symbole dans le nuage de points
Une belle solution existe pour le cas des parcelles de ligne:
leg = ax.legend()
# change the font colors to match the line colors:
for line,text in zip(leg.get_lines(), leg.get_texts()):
text.set_color(line.get_color())
Cependant, les couleurs de courbe de dispersion ne sont pas accessibles par get_lines()
.Pour le cas de 3 couleurs, je pense que je peux définir manuellement les couleurs de texte de un par-un en utilisant par exemple. text.set_color('r')
. Mais j'étais curieux de savoir si cela peut être fait automatiquement en lignes. Merci!
Que diriez-vous 'get_children' ou 'get_patches'? Pourriez-vous fournir un exemple de travail minimum? Vous voudrez peut-être regarder dans les méthodes de légende pour d'autres idées: https://matplotlib.org/1.3.0/api/legend_api.html –
@AleksanderLidtke Merci pour les suggestions! J'ai essayé 'leg.get_patches()' avant et rien ne revient. J'ai juste essayé 'leg.get_children()' et il retourne les objets 'matplotlib.offsetbox.VPacker' et' matplotlib.patches.FancyBboxPatch', dont aucun n'a la propriété 'get_color()'. Le lien de la solution a un exemple de travail pour les lignes, désolé avec des diagrammes de dispersion je n'ai qu'un exemple non-travail ... – Phyinmi
un exemple non-travail est bien. S'il vous plaît, faites juste un exemple simple qui montre comment vous créez les diagrammes de dispersion et la légende. Si cela ne fonctionne pas, dites simplement quelles erreurs vous obtenez. –