Подтвердить что ты не робот

Imshow (img, cmap = cm.gray) показывает белый цвет для значения 128

Я перехожу от MatLab к python и играю с функцией imshow.

Кажется, я не могу понять, почему он не показывает значение 128 как серое, и я выбрал cmap как серый.

Code example

Кажется, он использует оттенки серого для самых высоких (128) и самых низких значений. Я хочу, чтобы он использовал оттенки серого для [0: 255]. Как это сделать?

4b9b3361

Ответ 1

Используйте параметры vmin и vmax:

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

Без указания vmin и vmax, plt.imshow автоматически настраивает свой диапазон на минимальные и максимальные данные.


Я не знаю, как установить параметры по умолчанию vmin и vmax для всех графиков imshow, но вы можете использовать functools.partial для подготовки пользовательской команды imshow-like с установленными параметрами по умолчанию:

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()