将Matplotlib色彩图转换为深浅的调色板

时间:2019-08-06 10:21:54

标签: python matplotlib seaborn

我已经从选择的颜色中制作了一个颜色图,但是我想将其转换为可以用来“色调”海洋图的调色板。这可能吗?如果可以,怎么可能?

我用过...

cmap = pl.colors.LinearSegmentedColormap.from_list("", ["red","white"],gamma=0.5,N=len(hue))

...为了制作自己的颜色图,我知道这是可行的,因为它可以成功地应用于标准matplotlib.pyplot.scatter plot,如下所示。

plt.scatter(x=[1,2,3,4,5],y=[1,2,3,4,5],c=[5,4,3,2,1],cmap=cmap)

click here to see the output as it won't let me embed an image

但是,我试图使用seaborn的swarmplot函数并将颜色表作为色相参数传递。显然,这不起作用,因为此参数需要调色板-因此,我的问题!

我不太确定从哪里开始!任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

深浅的调色板是简单的颜色列表。您可以通过

获得颜色
cmap(np.linspace(0,1,cmap.N))

完整示例:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import seaborn as sns

df  =pd.DataFrame({"x" : np.random.randint(0,4, size=200),
                   "y" : np.random.randn(200),
                   "hue" : np.random.randint(0,4, size=200)})

u = np.unique(df["hue"].values)
cmap = mcolors.LinearSegmentedColormap.from_list("", ["indigo","gold"],gamma=0.5,N=len(u))

sns.swarmplot("x", "y", hue="hue", data=df, palette=cmap(np.linspace(0,1,cmap.N)))

plt.show()

enter image description here