Я использую imshow() рисовать Numpy массив 2D, так, например:Как определить цвета при использовании matplotlib.pyplot.imshow()?
my_array = [[ 2. 0. 5. 2. 5.]
[ 3. 2. 0. 1. 4.]
[ 5. 0. 5. 4. 4.]
[ 0. 5. 2. 3. 4.]
[ 0. 0. 3. 5. 2.]]
plt.imshow(my_array, interpolation='none', vmin=0, vmax=5)
который участки изображения:
То, что я хочу сделать, однако, изменить цвета , так что, например, 0 - КРАСНЫЙ, 1 - ЗЕЛЕНЫЙ, 2 - ОРАНЖЕВЫЙ, вы понимаете, что я имею в виду. Есть ли способ сделать это, и если да, то как?
Я попытался сделать это путем изменения записей в colourmap, например, так:
cmap = plt.cm.jet
cmaplist = [cmap(i) for i in range(cmap.N)]
cmaplist[0] = (1,1,1,1.0)
cmaplist[1] = (.1,.1,.1,1.0)
cmaplist[2] = (.2,.2,.2,1.0)
cmaplist[3] = (.3,.3,.3,1.0)
cmaplist[4] = (.4,.4,.4,1.0)
cmap = cmap.from_list('Custom cmap', cmaplist, cmap.N)
, но он не работает, как я ожидал, потому что 0 = первую запись в цветовой карте, но 1 ! к примеру = вторая запись в цветовой карте, и поэтому только 0 обращается diffrently:
Вы должны были бы сделать свой собственный дискретный colourmap. См. [Этот вопрос] (http://stackoverflow.com/questions/14777066/matplotlib-discrete-colorbar). – areuexperienced
@areuexperienced Я попытался использовать это, чтобы изменить colourmap, но он не работал должным образом. Например, изменение первой записи цвета на (1, 1, 1, 1.0) работает, как ожидалось; 0 в моем массиве numpy отображается как белый блок. Однако я думал, что изменение второй записи цвета будет соответствовать 1 в моем массиве numpy, но это не так. Поэтому их изменение не влияет на цвет; 1-5 остались одного цвета. – Esoemah