seaborn color_palette как цветовая карта matplotlib

Seaborn предлагает функцию под названием color_palette, которая позволяет легко создавать новые color_palettes для графиков.

colors = ["#67E568","#257F27","#08420D","#FFF000","#FFB62B","#E56124","#E53E30","#7F2353","#F911FF","#9F8CA6"]

color_palette = sns.color_palette(colors)

Я хочу преобразовать color_palette в карту, которую я могу использовать в matplotlib, но я не понимаю, как я могу это сделать.

К сожалению, такие функции, как «cubehelix_palette», «light_palette»,… имеют параметр «as_cmap». "color_palette" нет, к сожалению.

Ответы на вопрос(4)

Решение Вопроса

овую карту matplolib (спасибо @RafaelLopes за предлагаемые изменения):

import seaborn as sns
import matplotlib.pylab as plt
import numpy as np
from matplotlib.colors import ListedColormap

# construct cmap
flatui = ["#9b59b6", "#3498db", "#95a5a6", "#e74c3c", "#34495e", "#2ecc71"]
my_cmap = ListedColormap(sns.color_palette(flatui).as_hex())

N = 500
data1 = np.random.randn(N)
data2 = np.random.randn(N)
colors = np.linspace(0,1,N)
plt.scatter(data1, data2, c=colors, cmap=my_cmap)
plt.colorbar()
plt.show()

 chAlexey11 апр. 2017 г., 11:28
@RafaelLopes спасибо за ваш комментарий! Это очень полезно и позволяет практически использовать каждую палитру морских растений прямо в matplotlib! :)
 ImportanceOfBeingErnest03 февр. 2018 г., 22:09
Обратите внимание, что этот ответ создает цветовую карту matplotlib из списка цветов. Здесь вообще не нужно использовать seaborn, приведенный выше код может быть полностью выполнен без использования seaborn. Кажется, что оригинальная версия этого ответа на самом деле сделал именно это, используяmy_cmap = ListedColormap(flatui).
 RafaelLopes02 дек. 2016 г., 13:22
На основании этого ответа @Corrumpo вы используете кодcmap = ListedColormap(sns.color_palette().as_hex())
 Dremet19 июн. 2016 г., 11:51
Поправьте меня, если я ошибаюсь, но это не похоже на преобразование seaborn color_palette в карту matplotlib, это похоже на альтернативное решение о том, как создать карту цветов с помощью matplotlib. Если я удалю sns.set_palette (flatui) из вашего кода, ничего не изменится. Тем не менее, спасибо за демонстрацию этой функциональности matplotlib.
 mwaskom19 июн. 2016 г., 19:12
Это правильный ответ с точки зрения функциональности, но, пожалуйста, не используйте дискретные наборы цветов для отображения постоянно меняющихся данных, это очень вводит в заблуждение.

Большинство методов seaborn для генерации цветовых палитр имеют необязательный аргументas_cmap который по умолчаниюFalse, Вы можете использовать для непосредственного получения карты цветов Matplotlib:

import seaborn as sns
import matplotlib.pylab as plt
import numpy as np

# construct cmap
my_cmap = sns.light_palette("Navy", as_cmap=True)

N = 500
data1 = np.random.randn(N)
data2 = np.random.randn(N)
colors = np.linspace(0,1,N)
plt.scatter(data1, data2, c=colors, cmap=my_cmap)
plt.colorbar()
plt.show()

у / цветовую карту, добавление 256 в качестве количества цветов, требуемого из схемы цветов Seaborn, очень помогает.

cmap = ListedColormap(sns.color_palette("Spectral",256))   

но слишком длинный с большим количеством ненужной информации. Правильный и краткий ответ:

Конвертировать любойsns.color_palette() для совместимого с Matplotlib Cmap вам нужно две строки кода

from matplotlib.colors import ListedColormap
cmap = ListedColormap(sns.color_palette())
 Kristada67317 апр. 2019 г., 06:53
А для обратного? Есть ли подобный код для преобразования карты цветов Matplotlib, как[0.0, 'rgb(30, 136, 229)'], [0.01, 'rgb(30, 135, 228)'], ... в цветовую палитру, совместимую с морским рожком

Ваш ответ на вопрос