web-dev-qa-db-fra.com

La palette de couleurs Seaborn ne fonctionne pas correctement avec le tracé de joint

J'ai un peu de mal à personnaliser mes couleurs pour un tracé de ligne. Je veux montrer un ensemble de spectres avec une palette de couleurs séquentielle. L'argument "palette =" blues "fonctionne bien, mais n'accepte aucune liste de couleurs appropriée (comme" Blues_d "), qui n'inclut aucune couleur vive.

This is a representative graph showing how my plot looks like

Ci-dessous, vous pouvez voir le code que j'utilise.

color = (sns.dark_palette("purple"))
sns.set()

ax = sns.lineplot(x="Wavelength", y="Absorption", hue="t (min)", lw=1, data=df1, palette=color, legend="brief")

Le problème est que je reçois l'erreur suivante: 

ValueError: la liste de palettes contient un nombre de couleurs incorrect.

La question est donc la suivante: comment utiliser la fonction de tracé de ligne en utilisant une palette de couleurs séquentielle de bleus, de rouges ou de tout ce qui ne contient pas de couleurs vives?

J'utilise la version 0.23.3 de pandas, la version 2.2.2 de matplotlib et la version 0.9.0 de seaborn

5
Joscha Kruse

Puisque vous mentionnez la colonne t (min) dans l'option hue, vous devez connaître le nombre total de valeurs uniques de la colonne. 

Supposons qu'il y a 5 valeurs uniques dans la colonne. Vous pouvez donc définir le nombre avec l'option n_colors de sns.color_palette:

ax = sns.lineplot(x="Wavelength", 
y="Absorption", 
hue="t (min)", 
lw=1, 
data=df1, 
palette=sns.color_palette('coolwarm', n_colors=5), 
legend="brief")
1
Hakan