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

时间:2018-04-10 19:55:17

标签: python matplotlib

我正在尝试使用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来存档它?

2 个答案:

答案 0 :(得分:1)

您可以使用vminvmax参数将特定范围映射到某个色彩映射,然后将这些颜色分配给图表中的特定值。这是一个简单的例子,使用brg 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

答案 1 :(得分:1)

我想这里你需要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)元组(而不是预定义的颜色字符串)