Python 为二进制矩阵matplotlib着色

Python 为二进制矩阵matplotlib着色,python,matrix,matplotlib,wxpython,Python,Matrix,Matplotlib,Wxpython,我创建了一个这样的二元矩阵,我想做的是通过将一个二元矩阵乘以一个小于零的数字,使绘图具有某种颜色。然而,我上面的代码并没有这样做,绘图仍然是黑色的。我很确定这与我的颜色阵列有关,但我不知道如何编辑它,所以它是正确的。 highlightc是一个包含[(1109)、(1102)、(67102)等]ax的列表。imshow(X)调整颜色比例,使X中的最小值映射到最小颜色,X中的最大值映射到cmap中的最高颜色 当您将高亮显示乘以一个常量颜色时,X中的最高值从1降至0.21,但这对ax.imshow没

我创建了一个这样的二元矩阵,我想做的是通过将一个二元矩阵乘以一个小于零的数字,使绘图具有某种颜色。然而,我上面的代码并没有这样做,绘图仍然是黑色的。我很确定这与我的颜色阵列有关,但我不知道如何编辑它,所以它是正确的。
highlightc
是一个包含
[(1109)、(1102)、(67102)等]
ax的列表。imshow(X)
调整颜色比例,使X中的最小值映射到最小颜色,X中的最大值映射到
cmap
中的最高颜色

当您将
高亮显示
乘以一个常量
颜色
时,
X
中的最高值从1降至0.21,但这对
ax.imshow
没有影响,因为颜色比例也会调整,这会阻碍您的意图

但是,如果您提供
vmin=0
vmax=1
参数,则
ax.imshow
不会调整颜色范围--它将0与最低颜色关联,1与最高颜色关联:

highlightc = np.zeros([N, N])
print highlightc
c = len(highlightc)
colour = [0.21]*c
colour = np.array(colour)
print colour
for x, y in hl:
    highlightc[x, y] = 1##set so binary matrix knows where to plot
h=ax.imshow((highlightc*colour), interpolation='nearest',cmap=plt.cm.spectral_r)
fig.canvas.draw()
ax.imshow(X)
调整颜色比例,以便将X中的最低值映射到最低颜色,将X中的最高值映射到
cmap
中的最高颜色

当您将
高亮显示
乘以一个常量
颜色
时,
X
中的最高值从1降至0.21,但这对
ax.imshow
没有影响,因为颜色比例也会调整,这会阻碍您的意图

但是,如果您提供
vmin=0
vmax=1
参数,则
ax.imshow
不会调整颜色范围--它将0与最低颜色关联,1与最高颜色关联:

highlightc = np.zeros([N, N])
print highlightc
c = len(highlightc)
colour = [0.21]*c
colour = np.array(colour)
print colour
for x, y in hl:
    highlightc[x, y] = 1##set so binary matrix knows where to plot
h=ax.imshow((highlightc*colour), interpolation='nearest',cmap=plt.cm.spectral_r)
fig.canvas.draw()

您可以使用
h.set_-clim([vmin,vmax])调整事实发生后的颜色限制
您可以使用
h.set_-clim([vmin,vmax])调整事实发生后的颜色限制。