这是一个简单的可复制代码:
import numpy as np
import matplotlib.pyplot as plt
plt.figure()
img = np.ones((3,3))
plt.imshow(img)
plt.figure()
plt.imshow(np.array([1,1,1,1,0,1,1,1,1]).reshape(3,3))
它将为您提供如下图像:
即使您使用
plt.imshow(img.astype(float)) or
plt.imshow(img*255)
它仍然是同一张图片。
我只需要Matplotlib像第二张图片一样给我第一张图片作为黄色图片即可。
答案 0 :(得分:1)
明确使用imshow
的vmin
和vmax
参数:
使用标量数据并且没有明确的 norm 时, vmin 和 vmax 定义了颜色图所覆盖的数据范围。默认情况下,颜色图覆盖所提供数据的完整值范围。如果使用 norm 参数,则会忽略 vmin , vmax 。
import numpy as np
import matplotlib.pyplot as plt
plt.figure()
img = np.ones((3, 3))
plt.imshow(img, vmin=0, vmax=1)
plt.figure()
plt.imshow(np.array([1, 1, 1, 1, 0, 1, 1, 1, 1]).reshape(3, 3))
plt.show()
对于第二个示例,数据范围是[0 ... 1]
,因此默认情况下,颜色是相对于该范围缩放的。但是,对于第一个示例,[0 ... 1]
的所需数据范围无法从数据本身(全部)中提取,因此您必须显式提供该信息。
希望有帮助!
----------------------------------------
System information
----------------------------------------
Platform: Windows-10-10.0.16299-SP0
Python: 3.8.1
Matplotlib: 3.2.0rc3
NumPy: 1.18.1
----------------------------------------