Чтобы элементы были разных цветов, присвойте им разные значения:
my_array = diag([1,1,1,2,2,2,3,3,3])
Чтобы указать цвета, попробуйте:
from matplotlib.colors import ListedColormap, NoNorm
cmap = ListedColormap(['#E0E0E0', '#FF8C00', '#8c00FF', '#00FF8C'])
pcolor(my_array,cmap=cmap,norm=NoNorm())
Аргумент norm=NoNorm()
позволяет избежать масштабированиязначения матрицы, так что 0 получает первый цвет в списке, 1 - второй и т. д.