python - cmap - seaborn color_palette como matplotlib colormap
seaborn palette dictionary (4)
Seaborn ofrece una función llamada paleta de colores, que le permite crear fácilmente nuevas paletas de colores para parcelas.
colors = ["#67E568","#257F27","#08420D","#FFF000","#FFB62B","#E56124","#E53E30","#7F2353","#F911FF","#9F8CA6"]
color_palette = sns.color_palette(colors)
Quiero transformar color_palette en cmap, que puedo usar en matplotlib, pero no veo cómo puedo hacer esto.
Lamentablemente funciones como "cubehelix_palette", "light_palette", ... tienen un parámetro "as_cmap". "color_palette" no, desafortunadamente.
La mayoría de los métodos marinos para generar paletas de colores tienen un argumento opcional as_cmap
que por defecto es False
. Puede usar para obtener directamente un mapa de color 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()
La primera respuesta es de alguna manera correcta pero demasiado larga con mucha información innecesaria. La respuesta correcta y corta es:
Para convertir cualquier sns.color_palette()
a un cmap compatible matplotlib necesita dos líneas de código
from matplotlib.colors import ListedColormap
cmap = ListedColormap(sns.color_palette())
Solo un consejo adicional: si uno quiere una barra de colores continua / mapa de colores, agregue 256 ya que la cantidad de colores requeridos de Seaborn Colorscheme ayuda mucho.
cmap = ListedColormap(sns.color_palette("Spectral",256))
Tienes que convertir una lista de colores de la paleta marinera a un mapa de colores de matplolib (thx a @RafaelLopes para los cambios propuestos):
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()