我正在使用imshow()来绘制一个二维的numpy数组,例如:
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为橙色,你知道我的意思吗?有没有办法实现这个功能,如果可以,怎么做?
我尝试通过更改颜色映射中的条目来实现此目的,就像这样:
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被绘制成了不同的颜色:
![enter image description here](https://istack.dev59.com/H6UBN.webp)