【发布时间】:2012-10-06 14:45:24
【问题描述】:
我正在从 MatLab 迁移到 python 并使用 imshow 函数。
我似乎无法理解为什么它没有将值 128 显示为灰色,因为我选择了 cmap 为灰度。
似乎它使用灰度来表示最高 (128) 和最低值。我希望它使用 [0:255] 的灰度。我该怎么做?
【问题讨论】:
标签: python matplotlib
我正在从 MatLab 迁移到 python 并使用 imshow 函数。
我似乎无法理解为什么它没有将值 128 显示为灰色,因为我选择了 cmap 为灰度。
似乎它使用灰度来表示最高 (128) 和最低值。我希望它使用 [0:255] 的灰度。我该怎么做?
【问题讨论】:
标签: python matplotlib
使用vmin 和vmax 参数:
plt.imshow(bg, cmap=plt.get_cmap('gray'), vmin=0, vmax=255)
如果不指定 vmin 和 vmax,plt.imshow 会自动将其范围调整为数据的最小值和最大值。
我不知道如何为所有 imshow 绘图设置默认的 vmin 和 vmax 参数,但您可以使用 functools.partial 准备一个自定义的类似 imshow 的命令并设置默认参数:
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()
【讨论】:
functools.partial。见上文。