Используйте цветовую карту в качестве палитры в Seaborn - PullRequest
0 голосов
/ 10 октября 2018

Вероятно, это неправильное понимание того, как карты цветов отличаются от палитр, но я хотел бы использовать карту цветов, недоступную в seaborn, для окраски моего набора данных в двоичном виде.Я попытался использовать palettable, а теперь, в частности, cmocean напрямую, но получу TypeError;

Объект 'LinearSegmentedColormap' не повторяется

Использование любой из доступных в Seaborn палитр будет работать нормально, но мне нужна палитра, которая не идетк белому, поскольку это добавляет странную «полосу» к сюжету.

У меня есть фрейм данных с 3 столбцами с числовыми данными, размерами и добавлен столбец бина для использования цветов на графике.

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()

1 Ответ

0 голосов
/ 10 октября 2018

Seaborn не принимает экземпляр Colormap в качестве ввода для .color_palette. Требуется

имя matplotlib cmap, [...] или список цветов в любом формате, который принимает matplotlib

Поскольку регистры cmoceanего цветовые карты с matplotlib с префиксом "cmo.", вы должны сделать

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...