Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

seaborn color_palette as matplotlib colormap

Seaborn offers a function called color_palette, which allows you to easily create new color_palettes for plots.

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

I want to transform color_palette to a cmap, which I can use in matplotlib, but I don't see how I can do this.

Sadly just functions like "cubehelix_palette","light_palette",… have an "as_cmap" paramater. "color_palette" doesn't, unfortunately.

like image 667
Dremet Avatar asked Jun 18 '16 23:06

Dremet


People also ask

What is matplotlib colormap?

Scientifically, the human brain perceives various intuition based on the different colors they see. Matplotlib provides some nice colormaps you can use, such as Sequential colormaps, Diverging colormaps, Cyclic colormaps, and Qualitative colormaps.

What is the default colormap for matplotlib?

Colormap. The new default colormap used by matplotlib. cm. ScalarMappable instances is 'viridis' (aka option D).


2 Answers

Most seaborn methods to generate color palettes have an optional argument as_cmap which by default is False. You can use to directly get a Matplotlib colormap:

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

like image 33
Ramon Crehuet Avatar answered Oct 01 '22 19:10

Ramon Crehuet


You have to convert a list of colors from seaborn palette to color map of matplolib (thx to @RafaelLopes for proposed changes):

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

like image 200
Serenity Avatar answered Oct 01 '22 21:10

Serenity