Можно ли контролировать, какие цвета извлекаются из таблицы цветов matplotlib? - PullRequest
0 голосов
/ 25 марта 2020

Я хочу назначить цвета на графике номинальным данным, представленным целыми числами. Я хочу нарисовать цвета из качественной цветовой карты, в частности я хочу нарисовать пять цветов из Set3:

Matplotlib built-in Qualitative colormaps

Проблема в том, что я хочу использовать первые пять цветов, но colormapper нормализует мои данные, которые варьируются от 1 до 5 для пяти категориальных значений, и выбирает 1-й, 4-й, 7-й, 10-й и 12-й цвета из набора из 12 цветов.

В основном, matplotlib.cm.get_cmap позволяет вам указать количество цветов, но нормализуется по всему диапазону:

from matplotlib import cm
set3_5 = cm.get_cmap("Set3", lut = 5)

Я хочу что-то вроде matplotlib.colors.ListedColormap, у которого есть параметр N, который усекает список цветов после N пунктов без нормализации. Но я не могу понять, как передать встроенную цветовую карту в ListedColormap.

1 Ответ

2 голосов
/ 25 марта 2020

С помощью cm.get_cmap("Set3").colors вы получите список из 12 цветов в цветовой карте. Этот список можно нарезать, чтобы получить определенные c цвета. Он может использоваться в качестве входных данных для ListedColormap.

. Обратите внимание, что в последовательной цветовой карте, такой как viridis, список имеет 256 цветов. Вы можете получить равномерно распределенное подмножество с помощью cm.get_cmap("viridis", 8).colors, а затем снова взять срез, например, если вы не хотите использовать слишком яркие цвета.

Вот пример:

import matplotlib.pyplot as plt
import matplotlib
import numpy as np

cmap = matplotlib.colors.ListedColormap(matplotlib.cm.get_cmap("Set3").colors[:5])
plt.scatter(np.random.uniform(0, 10, 50), np.random.uniform(0, 10, 50), c=np.random.uniform(0, 10, 50), cmap=cmap)
plt.colorbar()
plt.show()

example

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...