2013-04-07 43 views
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() 

我創建了一個二元矩陣像這樣,和我想要做的是有情節與零度以下數字的二進制矩陣相乘,取得了一定的色彩。不過,我上面的代碼不會這樣做,並且繪圖仍然是黑色的。我很確定它與我的顏色數組有關,但我不知道如何編輯它,所以這是正確的。 highlightc是含有[(1,109),(1,102),(67,102),etc]顏色的二元矩陣matplotlib

回答

1

ax.imshow(X)調整色標,使得在X的最低值被映射到最低的顏色,和在X的最高值被映射到在cmap最高的顏色的列表。

當你一個常數colour,從1 X滴的最高值0.21乘highlight,但對ax.imshow沒有影響,因爲色階得到調整,以及,阻礙你的意圖。

但是,如果你提供vmin=0vmax=1參數,然後ax.imshow不會調整顏色範圍 - 它將0與最低的顏色和1具有最高關聯:

import numpy as np 
import matplotlib.pyplot as plt 

N = 150 
highlightc = np.zeros([N, N]) 

M = 1000 
hl = np.random.randint(N, size=(M, 2)) 
highlightc[zip(*hl)] = 1 

colour = 0.21 
fig, ax = plt.subplots() 
h = ax.imshow(
    (highlightc * colour), interpolation='nearest', cmap=plt.cm.spectral_r, 
    vmin=0, vmax=1) 
plt.show() 

enter image description here

+0

您可以使用'h.set_clim([vmin,vmax])''事後調整顏色限制 – tacaswell 2013-04-07 20:02:03