我正在尝试使用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来存档它?
答案 0 :(得分:1)
您可以使用vmin
和vmax
参数将特定范围映射到某个色彩映射,然后将这些颜色分配给图表中的特定值。这是一个简单的例子,使用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现在都是红色,所有其他值都设置为蓝色):
答案 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)元组(而不是预定义的颜色字符串)