在 Seaborn 中使用颜色图作为调色板

Chr*_*rge 6 python matplotlib seaborn

这可能是一种误解,颜色图与调色板有何不同,但我想使用 seaborn 中不可用的颜色图来为我的分箱数据集着色。我尝试直接使用可调色板,现在特别是 cmocean,但会得到一个 TypeError;

“LinearSegmentedColormap”对象不可迭代

使用 Seaborn 中可用的任何调色板都可以正常工作,但我需要一个不会变成白色的调色板,因为这会为情节添加奇怪的“条带”。

我有一个包含 3 列的数据框,其中包含数字数据、尺寸,并为图中的颜色使用添加了一个 bin 列。

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

cmap=cmocean.cm.balance
cpal=sns.color_palette(cmap,n_colors=64,desat=0.2)

plt.style.use("seaborn-dark")
ax = sns.stripplot(x='Data', y='Dimension', data=dfBalance, jitter=0.15, edgecolor='none', alpha=0.4, size=4, hue='bin', palette=cpal)
sns.despine()
ax.legend_.remove()
plt.show()
Run Code Online (Sandbox Code Playgroud)

Imp*_*est 5

Seaborn 不会将Colormap实例作为 的输入.color_palette它需要

matplotlib cmap 的名称、[...] 或 matplotlib 接受的任何格式的颜色列表

由于 cmocean 使用带有"cmo."前缀的matplotlib 注册其颜色图,您可以这样做

import seaborn as sns
import cmocean

cpal = sns.color_palette("cmo.balance", n_colors=64, desat=0.2)
Run Code Online (Sandbox Code Playgroud)

如果您有自己或从任何其他包创建的自定义颜色图,您可以自己注册。

import seaborn as sns
import matplotlib.cm
import matplotlib.colors

cmap = matplotlib.colors.LinearSegmentedColormap.from_list("", ["brown", "pink", "limegreen"])
matplotlib.cm.register_cmap("mycolormap", cmap)
cpal = sns.color_palette("mycolormap", n_colors=64, desat=0.2)
Run Code Online (Sandbox Code Playgroud)