2012-10-06 3 views
12

저는 MatLab에서 Python으로 이동하고 imshow 함수로 놀고 있습니다.imshow (img, cmap = cm.gray)는 128 값에 대해 흰색을 표시합니다.

나는 그레이 스케일로 cmap을 선택했을 때 회색으로 값 128이 표시되지 않는 이유에 대해 머리를 터는 것처럼 보일 수 없습니다. 그것은 가장 높은 계조 대 (128) 및 최저 값을 사용하므로

Code example

내가가 [255 0]에 대한 계조를 사용할 .. 보인다. 어떻게해야합니까?

답변

23

사용에게 vminvmax 매개 변수 :

plt.imshow(bg, cmap=plt.get_cmap('gray'), vmin=0, vmax=255) 

vminvmax, plt.imshow 데이터의 최소 및 최대로 범위를 자동으로 조절을 지정하지 않고.


나는 기본적 vmin 모든 imshow 플롯에 대한 vmax 매개 변수를 설정하는 방법을 알고하지 않지만, 사용자가 설정 한 기본 매개 변수를 사용하여 사용자 정의 imshow 같은 명령을 준비하는 functools.partial을 사용할 수

import matplotlib.pyplot as plt 
import numpy as np 
import functools 

bwimshow = functools.partial(plt.imshow, vmin=0, vmax=255, 
          cmap=plt.get_cmap('gray')) 

dots = np.random.randn(10, 10)*255 
bwimshow(dots) 
cbar = plt.colorbar() 

plt.show() 
+0

을 고마워요! :-) - 모든 플롯의 기본값으로 설정할 수있는 방법이 있습니까? – Norfeldt

+2

예,'functools.partial'을 사용합니다. 위 참조. – unutbu

관련 문제