在Python中使用matplotlib显示彩色二维数组

6 投票
1 回答
4247 浏览
提问于 2025-04-15 23:55

我想用Matplotlib把一个numpy的二维矩阵画成彩色的矩阵。我有一个9行9列的数组:

my_array = diag(ones(9))

# plot the array
pcolor(my_array)

我想把对角线的前面三个元素设置成一种颜色,接下来的三个元素设置成另一种颜色,最后三个元素再设置成另一种颜色。我想用十六进制的颜色代码来指定颜色,比如“#FF8C00”。我该怎么做呢?

另外,我还想知道怎么给pcolor中值为0的元素设置颜色?

1 个回答

2

要让这些元素显示不同的颜色,你需要给它们赋予不同的值:

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会得到第二个颜色,依此类推。

撰写回答