I have a single band image with dimensions (62, 62), that ranges from [0, 0.3]. For context it is the NDVI band, calculated by (NVI-Red) / (NVI Red), where NVI is a band. Can more about it here: 
However, now I want to apply the cmap to ndvi and save it to a new Numpy array. But when I do so, the image display is much different.
How can I apply the cmap.RdYlGn to an image and save the results such that when displaying it shows up the same as when I apply the cmap in imshow?
CodePudding user response:
A colormap works on inputs from 0 for the lowest color to 1 for the highest. If your input has another range, you can use explicit normalization:
import matplotlib.pyplot as plt
norm = plt.Normalize(vmin=ndvi.min(), vmax=ndvi.max())
t = cm(norm(ndvi))
plt.imshow(t)
to get the same conversion as used in plt.imshow(nvdi, cmap=cm).

