简体   繁体   English

seaborn color_palette as matplotlib colormap

[英]seaborn color_palette as matplotlib colormap

Seaborn offers a function called color_palette, which allows you to easily create new color_palettes for plots. Seaborn提供了一个名为color_palette的功能,可以让您轻松地为绘图创建新的color_palettes。

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. 我想将color_palette转换为cmap,我可以在matplotlib中使用,但我不知道如何做到这一点。

Sadly just functions like "cubehelix_palette","light_palette",… have an "as_cmap" paramater. 可悲的是,像“cubehelix_palette”,“light_palette”这样的函数,......有一个“as_cmap”参数。 "color_palette" doesn't, unfortunately. 不幸的是,“color_palette”没有。

You have to convert a list of colors from seaborn palette to color map of matplolib (thx to @RafaelLopes for proposed changes): 你必须将一个颜色列表从seaborn调色板转换为matplolib的颜色映射(thx到@RafaelLopes用于建议的更改):

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()

在此输入图像描述

Most seaborn methods to generate color palettes have an optional argument as_cmap which by default is False . 生成调色板的大多数seaborn方法都有一个可选参数as_cmap ,默认情况下为False You can use to directly get a Matplotlib colormap: 您可以使用直接获取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()

在此输入图像描述

The first answer is somehow correct but way too long with a lot of unnecessary information. 第一个答案在某种程度上是正确的,但是对于很多不必要的信息来说太长了。 The correct and short answer is: 正确而简短的答案是:

To convert any sns.color_palette() to a matplotlib compatible cmap you need two lines of code 要将任何sns.color_palette()转换为与matplotlib兼容的cmap,您需要两行代码

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

只是一个额外的提示 - 如果你想要一个连续的colorbar / colormap,加上256,因为Seaborn colorscheme所需的颜色数量有很大帮助。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM