2017-01-02 14 views
0

Учитывая, что у меня есть два, почти идентичных массива, а затем я рисую их как серые изображения, но на выходе отображается значение 12 как серый из одного массива и белый с другого, что мне не хватает?Pyplot показывает разные цвета для одного и того же значения?

# coding: utf-8 

# In[1]: 

import numpy as np 
import matplotlib.pyplot as plt 


# In[2]: 

ori = [[ 12., 11., 12.], 
[ 12., 12., 12.], 
[ 13., 12., 11.]] 

qtz = [[ 13., 12., 12.], 
[ 12., 12., 13.], 
[ 12., 13., 12.]] 


# In[3]: 

plt.imshow(ori, interpolation='nearest',cmap=plt.cm.binary) 
plt.show() 

print('#############') 

plt.imshow(qtz, interpolation='nearest',cmap=plt.cm.binary) 
plt.show() 

original quantized

+1

Это происходит потому, что карта цветов будет масштабироваться в соответствии с самыми низкими и самыми высокими значениями массивов. –

+0

Спасибо @ J.P.Petersen Могу ли я заставить его принимать другие значения? –

+0

Я не понял, почему «downvote». –

ответ

2

Как сказал J. P. Petersen проблема заключается в том, что цветовая карта автоматически выбирает цветовую гамму.

Вы можете это исправить с vmin и vmax:

plt.imshow(ori, interpolation='nearest',cmap=plt.cm.binary, vmin=11, vmax=13) 

plt.imshow(qtz, interpolation='nearest',cmap=plt.cm.binary, vmin=11, vmax=13) 

enter image description here

enter image description here

+0

Спасибо, я смотрел [документацию] (http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot .imshow), когда я также нашел ответ. –