使用matplotlib时,是否有一种简单的方法可以指示给定矩阵的每个元素的特定颜色.例如,假设我们要使用三种特定颜色显示"x":红色,黑色和白色:
但是,我发现的唯一选项是使用"cmap",它不会直接为您提供"直接"指定颜色的选项.
fig = plt.figure()
ax = fig.add_subplot(111)
x= [[0,0,0,0,0,0],[0,0,0,0,0,0], [0,1,1,2,1,1], [0,0,0,0,0,1], [0,1,1,1,1,1]]
cax = ax.matshow(x,cmap=plt.cm.gray_r )
plt.show()
Run Code Online (Sandbox Code Playgroud)
我的问题:如何更改我的代码以显示上面的红色/黑色/白色网格?[例如0表示黑色,1表示白色,2表示红色],一般来说我们如何为更大的颜色列表执行此操作?喜欢10-15种颜色.
另外,如何在matix中为某个元素指定一定的颜色?例如在上面,x [i] [j] == 0然后color ='black'或x [i] [j] == 2然后color ='red'
谢谢.
kaz*_*ase 10
您可以创建自己的颜色贴图:
from matplotlib.colors import ListedColormap
cmap = ListedColormap(['k', 'w', 'r'])
cax = ax.matshow(x,cmap=cmap)
Run Code Online (Sandbox Code Playgroud)
如果要指定10-15种颜色,可能会用完单字母颜色.在这种情况下,您可以指定RGB三元组(例如ListedColormap([[0, 0, 0], [1, 1, 1], [1, 0, 0]]))或各种其他颜色格式.或者,使用此处列出的预定义离散("定性")颜色映射之一.
如果矩阵中的值不是连续的整数,则可以在绘图之前对其进行变换.
import numpy as np
x = np.array([[0,0,0,0,0,0],[0,77,0,0,22,0], [0,1,1,2,1,1], [0,0,14,0,0,1], [0,1,1,1,1,1]])
u, i = np.unique(x, return_inverse=True)
y = i.reshape(x.shape)
# array([[0, 0, 0, 0, 0, 0],
# [0, 5, 0, 0, 4, 0],
# [0, 1, 1, 2, 1, 1],
# [0, 0, 3, 0, 0, 1],
# [0, 1, 1, 1, 1, 1]])
Run Code Online (Sandbox Code Playgroud)