Python 使用不同的颜色矩阵matplotlib为某些点着色

Python 使用不同的颜色矩阵matplotlib为某些点着色,python,colors,matplotlib,Python,Colors,Matplotlib,我在matplotlib中绘制了一个矩阵,使用的是self.ax.imshow(arr,cmap=plt.cm.Greys\r,interpolation='none')此时它们都是相同的颜色。但是,我有另一个数组,它的大小与为矩阵绘制的数组的大小相同。数组包含从0到1的数字。此数组中的每个数字对应于矩阵上的一个图。 如何使数字为0到1的数组与矩阵上绘图的颜色相对应 我有一个数组numberlist=[(1,34),(2,35),(5,78)等]到310 那么我会的 data = np.arra

我在matplotlib中绘制了一个矩阵,使用的是
self.ax.imshow(arr,cmap=plt.cm.Greys\r,interpolation='none')
此时它们都是相同的颜色。但是,我有另一个数组,它的大小与为矩阵绘制的数组的大小相同。数组包含从0到1的数字。此数组中的每个数字对应于矩阵上的一个图。 如何使数字为0到1的数组与矩阵上绘图的颜色相对应

我有一个数组
numberlist=[(1,34),(2,35),(5,78)等]
到310 那么我会的

data = np.array(number list)
N=data.max()+5
arr=np.ones((N,N),dtype='bool')
arr[data[:,1],data[:,0]]=0

那么上面的imshow

基于您的编辑,我相信您的意思是:

  • 您有一个
    boolean
    数组,它告诉您是否应该绘制点
  • 您有一个
    float
    数组,它告诉您如果绘制该点,该点应该是什么颜色
我想调用这些数组:
arr\u bool
arr\u val

将它们相乘,当
True
时得到一个浮点数,当
False
时得到一个零,我们可以使用它们的乘积来着色:

N = 10
arr_bool = np.random.random_integers(0,1,(N,N))
arr_val  = np.random.rand(N,N)
imshow(arr_bool*arr_val, cmap = cm.spectral_r, interpolation = 'nearest')
因此,如果我们只绘制
arr\u bool
,它将如下所示: 如果我们只绘制颜色,或者
arr\u val
: 把它们放在一起,
arr\u bool*arr\u val

John,当你说“数字从0到1”时,你的意思是0到1之间的浮点数,还是整数0或1?i、 例如,它们是@tcaswell所想的二进制掩码吗?同样,当你说“矩阵上的一个图”时,你是指一个像素、点还是矩阵元素;或者你是指与矩阵相关的其他东西的实际绘图?它们是浮点数、0.233343、0.2321241、0.923432等。编辑有帮助。所以你有一个二进制/布尔矩阵,
arr
,但是什么是浮点数组呢?我想我算出来了,请看我答案的编辑。我也是一名软物质研究生。给我发一封电子邮件(查看我的个人资料了解地址),我们应该聊天。这是我想要的,但目前,它没有改变我想要绘制的数据的颜色,而是改变了我想要白色的部分的颜色