2013-04-07 6 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.

Когда вы умножаете highlight постоянным colour, наибольшее значение в X капель от 1 до 0,21, но это не имеет никакого влияния на ax.imshow, так как цветовая гамма получает регулируется, а также, мешая свое намерение.

Если, однако, вы поставляете vmin=0, vmax=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

Смежные вопросы