web-dev-qa-db-fra.com

cycle marin à travers les couleurs avec dispersion matplotlib

Comment puis-je obtenir des couleurs d'origine marine lors d'un nuage de points?

import matplotlib.pyplot as plt
import seaborn as sns
ax=fig.add_subplot(111)
for f in files:
    ax.scatter(args) # all datasets end up same colour
    #plt.plot(args) #  cycles through palette correctly
18
amn41

Vous devez indiquer à matplotlib la couleur à utiliser. Pour utiliser, par exemple, la palette de couleurs par défaut de Seaborn:

import matplotlib.pyplot as plt
import seaborn as sns
import itertools
ax=fig.add_subplot(111)

palette = itertools.cycle(sns.color_palette())

for f in files:
    ax.scatter(args, color=next(palette))

Le itertools.cycle vérifie que nous ne manquons pas de couleurs et reprenons le premier après avoir utilisé le dernier.

36
Carsten

Pour donner suite à la réponse de Carsten, si vous avez un grand nombre de catégories auxquelles attribuer des couleurs, vous souhaiterez peut-être compresser les couleurs dans une très grande palette de couleurs, par exemple le xkcd_palette ou crayon_palette .. Remarque que cette pratique est généralement un anti-motif chartjunk : utiliser plus de 5 à 6 couleurs est généralement excessif et vous devrez peut-être envisager de modifier votre type de graphique.

import matplotlib.pyplot as plt
import seaborn as sns

palette = Zip(df['category'].unique(), sns.crayons.values())
0
François Leblanc