在Python中用自定义颜色绘制矩阵

2024-09-30 12:26:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python中的pytlot绘制一个矩阵。在

import matplotlib.pyplot as plt
m = [
    [1, 0, 2, 0, 0],
    [1, 1, 1, 2, 0],
    [0, 4, 1, 0, 0],
    [0, 4, 4, 1, 2],
    [1, 3, 0, 0, 1],
]

plt.imshow(m)

plt.show()

这看起来像我需要的,但问题是我需要能够为一个位置选择颜色。在

例如:

位置1x2必须为红色。在

要用Python和Pyplot归档吗?在


Tags: importmatplotlib颜色asshow绘制plt矩阵
2条回答

可以使用vminvmax参数将某个范围映射到某个colormap,然后将这些颜色分配给图中的特定值。下面是一个简单的例子,使用^{} cmap。在

我用1-10作为刻度,所以1是蓝色,5是红色,10是绿色,等等

import matplotlib.pyplot as plt

m = [
    [1, 0, 2, 0, 0],
    [1, 1, 1, 2, 0],
    [0, 4, 1, 0, 0],
    [0, 4, 4, 1, 2],
    [1, 3, 0, 0, 1]
]

dct = {1: 5., 0: 1., 2: 1., 3: 1., 4: 1.}
n = [[dct[i] for i in j] for j in m]
print(n)

plt.imshow(n, cmap='brg', vmin=1, vmax=10)
plt.show()

输出(矩阵中的所有1现在都是红色的,所有其他值都设置为蓝色):

enter image description here

我想matplotlib.colors.ListedColormap就是您在这里需要的:

import matplotlib
import matplotlib.pyplot as plt

colors = 'lime red blue magenta yellow'.split()
cmap = matplotlib.colors.ListedColormap(colors, name='colors', N=None)

m = [
    [1, 0, 2, 0, 0],
    [1, 1, 1, 2, 0],
    [0, 4, 1, 0, 0],
    [0, 4, 4, 1, 2],
    [1, 3, 0, 0, 1],
]

plt.imshow(m, cmap=cmap)
plt.show()

如果需要更多的控制,也可以在列表中使用(R,G,B)元组(而不是预定义的颜色字符串)

相关问题 更多 >

    热门问题