Python 如何提取;极端的;matplotlib彩色地图中的两种颜色?

Python 如何提取;极端的;matplotlib彩色地图中的两种颜色?,python,matplotlib,seaborn,colormap,Python,Matplotlib,Seaborn,Colormap,我正在阅读和测试seaborn。 我对基于预定义的matplotlibcolormap的深色发散调色板感兴趣。可能吗?(这在所有情况下都有意义吗?) 因为我实际上只想要3种颜色,“黑色”是中间的颜色,我可以提取调色板的第一个和最后一个,如下所示: import seaborn as sns left = sns.color_palette("BrBG")[0] right = sns.color_palette("BrBG")[-1] sns.palplot([left, "black", r

我正在阅读和测试
seaborn
。 我对基于预定义的
matplotlib
colormap的深色发散调色板感兴趣。可能吗?(这在所有情况下都有意义吗?)

因为我实际上只想要3种颜色,“黑色”是中间的颜色,我可以提取调色板的第一个和最后一个,如下所示:

import seaborn as sns

left = sns.color_palette("BrBG")[0]
right = sns.color_palette("BrBG")[-1]
sns.palplot([left, "black", right])

我发现,如果我增加源调色板中的元素数量,我可以获得较暗的颜色,如左和右:

left = sns.color_palette("BrBG", 12)[0]
right = sns.color_palette("BrBG", 12)[-1]
sns.palplot([left, "black", right])

我想知道如果我增加元素的数量,左边和右边的颜色会变暗到什么程度。我想他们最终不会是黑人,否则这两个极端将无法区分

是否可以直接从相应的
matplotlib
colormap中提取这些“极端”颜色? 我也可以选择较浅的颜色,要求调色板中的元素少于默认值(6)。要求2种元素会导致对我的口味来说太淡:

left = sns.color_palette("BrBG", 2)[0]
right = sns.color_palette("BrBG", 2)[-1]
sns.palplot([left, "black", right])

无论如何,这种方法不是很“干净”,并且颜色贴图的极端不一定是一个好的选择。此外,泛化可能很有用:如何根据预定义的颜色贴图创建具有3种以上颜色的暗发散调色板

上面提到的教程说,创建函数的结果非常平衡,并给出了以下示例:

sns.palplot(sns.diverging_palette(255, 133, l=60, n=7, center="dark")
我想我的问题是:

import matplotlib as mpl
cmap = mpl.cm.get_cmap("BrBG")
left = cmap(0)
right = cmap(cmap.N)
sns.palplot([left, "black", right])
如何找到与预定义的
matplotlib
colormap的两侧色调相对应的角度值?受到启发,我尝试了以下方法:

import matplotlib as mpl
cmap = mpl.cm.get_cmap("BrBG")
left = cmap(0)
right = cmap(cmap.N)
sns.palplot([left, "black", right])

所以我现在有一个部分答案。而且看起来太暗了

编辑:在husl系统中获取颜色的角度 答案在husl模块中:


以下内容可能对我的第一个问题很有用: