这可能是一个误解,色彩映射表与调色板有何不同,但我想使用seaborn无法提供的色彩映射表为合并的数据集着色。我尝试直接使用palettable,现在直接使用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()
答案 0 :(得分:2)
Seaborn不会将Colormap
实例用作.color_palette
的输入。 It takes
matplotlib cmap的名称,[...]或matplotlib接受的任何格式的颜色列表
由于cmocean使用"cmo."
前缀在matplotlib中注册了其色图,所以您应该这样做
import seaborn as sns
import cmocean
cpal = sns.color_palette("cmo.balance", n_colors=64, desat=0.2)
如果您自己或从任何其他包创建了自定义颜色图,则可以自己注册。
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)