Python 如何将整数映射到matplotlib中的颜色?

Python 如何将整数映射到matplotlib中的颜色?,python,matplotlib,Python,Matplotlib,更新: 我做了一个糟糕的黑客,我选择了一个颜色贴图渐变(在我的例子中是nipy_spectrum),并制作了一个字典,将我想要的颜色映射到一个整数,这样绘图函数就可以绘制正确的颜色。这需要对数字进行大量的推敲。如果没有更好的办法,我会发布解决方案 我有以下绘图功能,该功能是从我用于混淆矩阵的另一个绘图功能改编而来的: def plot_matrix(rm, title='Robot World', cmap=plt.cm.Blues): plt.imshow(rm, interpola

更新: 我做了一个糟糕的黑客,我选择了一个颜色贴图渐变(在我的例子中是nipy_spectrum),并制作了一个字典,将我想要的颜色映射到一个整数,这样绘图函数就可以绘制正确的颜色。这需要对数字进行大量的推敲。如果没有更好的办法,我会发布解决方案


我有以下绘图功能,该功能是从我用于混淆矩阵的另一个绘图功能改编而来的:

def plot_matrix(rm, title='Robot World', cmap=plt.cm.Blues):
    plt.imshow(rm, interpolation='nearest', cmap=cmap)
    plt.title(title)
    plt.tight_layout()
我有一个如下形式的矩阵:

[1,3,1,0,1,3,4]

[3,1,0,1,2,3,0]

。。。再来几排

理想情况下,我绘制此矩阵,使矩阵中的整数值与颜色相对应:
[“黑色”、“蓝色”、“黄色”、“绿色”、“红色”]
在类似matplotlib示例站点上的示例矩阵的图中进行插值:


我认为答案一定是某种定制cmap,比如:

cmap = { 0:'k',1:'b',2:'y',3:'g',4:'r' }
在matplotlib中如何执行此操作?我正在查看自定义彩色地图站点,它似乎比我要做的要复杂得多…

您可以使用a来制作离散彩色地图:

import matplotlib.pyplot as plt
from matplotlib import colors
import numpy as np

def plot_matrix(rm, title='Robot World', cmap=plt.cm.Blues):
    plt.imshow(rm, interpolation='nearest', cmap=cmap)
    plt.title(title)
    plt.tight_layout()
    plt.show()

cmap = colors.ListedColormap(['k','b','y','g','r'])
rm = np.random.randint(0,4,(5,5))
plot_matrix(rm,cmap=cmap)
,结果是:


同样如此。从上面的链接,映射是:
cmap=plt.cm.get_cmap('PiYG',11)
plt.plot(范围(5),c=cmap(0))