获取颜色 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=True
,seaborn
创建一个具有 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
对象。
如何获取来自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=True
,seaborn
创建一个具有 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
对象。