Недавно тоже столкнулся с такой же проблемой. Поэтому я создал следующий простой код Python для создания визуально различимых цветов для jupyter Notebook Matplotlib. Это не совсем максимально различимо для восприятия, но работает лучше, чем большинство встроенных цветовых карт в matplotlib.
Алгоритм разбивает шкалу HSV на 2 фрагмента: 1-й фрагмент с увеличением значения RGB, 2-й фрагмент с уменьшением альфа-канала, чтобы цвет мог сливаться с белым фоном.
Обратите внимание, что если вы используете какой-либо набор инструментов, кроме ноутбука jupyter, вы должны убедиться, что фон белый, иначе альфа-смешивание будет другим, и результирующий цвет также будет другим.
Кроме того, различимость цвета сильно зависит от экрана вашего компьютера, проектора и т. д. Цветовая палитра, различимая на одном экране, не обязательно подразумевается на другом. Вы должны физически протестировать его, если хотите использовать для презентации.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
def generate_colormap(N):
arr = np.arange(N)/N
N_up = int(math.ceil(N/7)*7)
arr.resize(N_up)
arr = arr.reshape(7,N_up//7).T.reshape(-1)
ret = matplotlib.cm.hsv(arr)
n = ret[:,3].size
a = n//2
b = n-a
for i in range(3):
ret[0:n//2,i] *= np.arange(0.2,1,0.8/a)
ret[n//2:,3] *= np.arange(1,0.1,-0.9/b)
# print(ret)
return ret
N = 16
H = np.arange(N*N).reshape([N,N])
fig = plt.figure(figsize=(10, 10))
ax = plt.pcolor(H, cmap=ListedColormap(generate_colormap(N*N)))
![введите описание изображения здесь](https://i.stack.imgur.com/HFMrH.png)
person
xuancong84
schedule
13.09.2019
N
подмножество элементов. - person ImportanceOfBeingErnest   schedule 09.03.2017