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

don*_*lan 7 python matplotlib

更新: 我选择了一个色彩映射渐变(在我的例子中是'nipy_spectral')并制作了一个字典,将我想要的颜色映射到一个整数,以便绘图函数绘制正确的颜色.它涉及很多数字的未来.如果没有更好的结果,我会发布解决方案.


我有以下绘图功能改编自我用于混淆矩阵的另一个绘图功能:

def plot_matrix(rm, title='Robot World', cmap=plt.cm.Blues):
    plt.imshow(rm, interpolation='nearest', cmap=cmap)
    plt.title(title)
    plt.tight_layout()
Run Code Online (Sandbox Code Playgroud)

我有一个以下形式的矩阵:

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

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

......还有几行.

理想情况下,我绘制此矩阵,使得矩阵内的整数值对应于颜色:['black','blue','yellow','green','red']在一个看起来像matplotlib示例网站上的示例矩阵的图中,用于插值最近:

在此输入图像描述


我认为答案必须是某种自定义cmap,例如:

cmap = { 0:'k',1:'b',2:'y',3:'g',4:'r' }
Run Code Online (Sandbox Code Playgroud)

我怎么在matplotlib中这样做?我正在查看自定义色彩映射网站,它似乎比我想做的更多涉及...

arm*_*ita 7

您可以使用a ListedColormap来执行离散色彩映射:

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)
Run Code Online (Sandbox Code Playgroud)

结果如下:

ListedColormap示例

  • 你创建了而不是使用`norm`? (3认同)