colormap
mapuje kolory w stosunku do wartości, jakie są przechowywane w macierzy. Najpierw zdefiniuj sobie paletę kolorów:
Kopiuj
cmap = clr.ListedColormap(['w', 'g', 'r'])
W tym przypadku używamy kolejno białego, zielonego i czerwonego. Ich kolejność w liście ma znaczenie. W naszym przypadku mapowanie będzie się odbywać od białego, poprzez zielony, kończąc na czerwonym. Teraz wystarczy przygotować odpowiednią tablicę. Najniższe wartości będą odpowiadać białemu, a najwyższe czerwonemu. Sugeruję najprostszą postać:
Kopiuj
[[0 0 0 0 0 0 0 0 0]
[0 0 2 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 1]]
Na pozycjach arr(8,3)
i arr(2,1)
wstawiłem odpowiednio 1
i 2
, które odpowiadają kolorom 'g'
i 'r'
. Cały kod:
Kopiuj
import matplotlib.pyplot as plt
import matplotlib.colors as clr
import numpy as np
n, m = 9, 4
arr = np.zeros(n*m, dtype='int8').reshape(m, n)
arr[3][8] = 1
arr[1][2] = 2
cmap = clr.ListedColormap(['w', 'g', 'r'])
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xticks(np.arange(n*m, step=1))
ax.set_yticks(np.arange(n*m, step=1))
ax.imshow(arr, cmap=cmap)
plt.show()

P. S. Bardziej karkołomne rozwiązanie polega na zdefiniowaniu funkcji, która będzie konwertować każdy element macierzy na obiekt Rectangle.