web-dev-qa-db-fra.com

seaborn color_palette comme palette de couleurs matplotlib

Seaborn propose une fonction appelée color_palette, qui vous permet de créer facilement de nouveaux color_palettes pour les tracés.

colors = ["#67E568","#257F27","#08420D","#FFF000","#FFB62B","#E56124","#E53E30","#7F2353","#F911FF","#9F8CA6"]

color_palette = sns.color_palette(colors)

Je souhaite transformer color_palette en cmap, que je peux utiliser dans matplotlib, mais je ne vois pas comment je pourrais le faire.

Malheureusement, les fonctions telles que "cubehelix_palette", "light_palette",… ont un paramètre "as_cmap". "color_palette" ne le fait pas, malheureusement.

38
Dremet

Vous devez convertir une liste de couleurs de la palette Seaborn en carte de couleurs de matplolib (merci à @RafaelLopes pour les modifications proposées):

import seaborn as sns
import matplotlib.pylab as plt
import numpy as np
from matplotlib.colors import ListedColormap

# construct cmap
flatui = ["#9b59b6", "#3498db", "#95a5a6", "#e74c3c", "#34495e", "#2ecc71"]
my_cmap = ListedColormap(sns.color_palette(flatui).as_hex())

N = 500
data1 = np.random.randn(N)
data2 = np.random.randn(N)
colors = np.linspace(0,1,N)
plt.scatter(data1, data2, c=colors, cmap=my_cmap)
plt.colorbar()
plt.show()

enter image description here

37
Serenity

La plupart des méthodes de génération de palettes de couleurs créées par seaborn ont un argument optionnel as_cmap qui par défaut est False. Vous pouvez utiliser pour obtenir directement une palette de couleurs Matplotlib:

import seaborn as sns
import matplotlib.pylab as plt
import numpy as np

# construct cmap
my_cmap = sns.light_palette("Navy", as_cmap=True)

N = 500
data1 = np.random.randn(N)
data2 = np.random.randn(N)
colors = np.linspace(0,1,N)
plt.scatter(data1, data2, c=colors, cmap=my_cmap)
plt.colorbar()
plt.show()

enter image description here

22
Ramon Crehuet

La première réponse est correcte, mais beaucoup trop longue avec beaucoup d'informations inutiles. La réponse correcte et courte est:

Pour convertir une sns.color_palette() en une cmap compatible matplotlib, vous avez besoin de deux lignes de code.

from matplotlib.colors import ListedColormap
cmap = ListedColormap(sns.color_palette())
15
Generic Wevers

Juste un conseil supplémentaire - si vous voulez une barre de couleurs/une palette de couleurs continue, il est très utile d’ajouter 256 couleurs au nombre de couleurs requises par Seaborn colorscheme.

cmap = ListedColormap(sns.color_palette("Spectral",256))   
8
LauraD