Как мне вызвать цвет из таблицы цветов в Python - PullRequest
0 голосов
/ 01 февраля 2020

в matplotlib (в частности, matplotlib.cm), вы можете вызвать цвет из цветовой карты, например,

import matplotlib.cm as cm
cm.viridis(0.5) #viridis is the name of a colormap

, и он берет цвет из центра цветовой карты (то есть (0.127568, 0.566949, 0.550556, 1.0)) в основном я хочу иметь возможность вызывать карту цветов, взятую из библиотеки palletable . и вы можете импортировать указанную c палитру следующим образом:

from palettable.colorbrewer.qualitative import Dark2_7

Это импортирует цветовую карту "Dark2_7", но я понятия не имею, как "вызвать" ее, как я это сделал с viridis, я Я только начинаю, и я буквально ничего не понимаю, спасибо, извините, если формулировка странная, спросите, нужны ли вам дополнительные подробности или это недостаточно ясно.

1 Ответ

0 голосов
/ 01 февраля 2020

Вы можете адресовать отдельный цвет как Dark2_7.mpl_colors[i] со значением для i от 0 до 6 (поскольку на этой карте 7 цветов). Или вы можете использовать его так же, как viridis, если вы делаете Dark2_7.mpl_colormap(0.5).

. Вот пример использования его в точечной диаграмме. Обратите внимание, что версия по умолчанию представляет собой непрерывную цветовую карту со всеми интерполированными цветами. Если вам нужна отдельная цветовая карта, используйте ListedColormap(Dark2_7.mpl_colors).

from matplotlib import pyplot as plt
import numpy as np
from palettable.colorbrewer.qualitative import Dark2_7
from matplotlib.colors import ListedColormap

x = np.random.uniform(-1, 1, 10000)
y = np.random.uniform(-1, 1, 10000)
z = np.sqrt(x**2+y**2)/1.4
fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(12, 5))
scat1 = ax1.scatter(x, y, c=z, vmin=0, vmax=1, s=1, cmap=Dark2_7.mpl_colormap)
plt.colorbar(scat1, ax=ax1)
scat2 = ax2.scatter(x, y, c=z, vmin=0, vmax=1, s=1, cmap=ListedColormap(Dark2_7.mpl_colors))
plt.colorbar(scat2, ax=ax2)
plt.show()

scatter plot

...