获取颜色 brewer 调色板的 cmap

Obtaining a cmap for color brewer palette

如何获取来自sns.color_palette()函数的调色板的cmap版本?例如,我可以这样要求颜色 brewer 调色板:

sns.color_palette('Blues')

但是

sns.color_palette('Blues', as_cmap=True)

结果 "TypeError: color_palette() got an unexpected keyword argument 'as_cmap'"。

我当然可以使用 sns.choose_colorbrewer_palette(),它接受 as_cmap 参数,但它只能在交互模式下工作(我不能在 [=25] 中要求 'Blues' =] 脚本).

如果您想在 matplotlib/seaborn 函数中使用颜色图,只需传递名称(例如 plt.pcolormesh(..., cmap="Blues")),matplotlib 就会知道该怎么做。

如果您出于某种原因需要颜色图对象,它位于 matplotlib.cm 命名空间中。

只是想补充一些让我感到困惑的东西。

对于支持它的调色板,如果您设置 as_cmap=Trueseaborn 创建一个具有 256 种颜色的调色板,然后要求 mpl.ListedColorMap 制作一个 mpl.ColorMap(这将简单地在相邻颜色之间进行插值,将它们视为将 [0, 1] 间隔分成相等的部分)。 seaborn 在这种情况下不使用 n_colors 参数是有道理的,因为 mpl.ColorMap 表示从 [0, 1] 到颜色的函数,并且使用更多颜色来创建mpl.ListedColorMap 这个函数越精确。 (对于大多数应用程序来说,大概不需要超过 256 种颜色?)

因此,将 seaborn 调色板转换为 mpl.ColorMap 可以通过生成调色板的 256 种颜色(当然假设调色板是通过算法生成的,所以它会产生那么多不同的颜色)然后调用 mpl.ListedColorMap。当然,正如@mwaskom 指出的那样,可以简单地使用 mpl.cm 命名空间中的 mpl.ColorMap 对象。