Question

I understand the concept. But I think I am making a silly mistake. This is what I want (psuedo-ish code). This is for an exercise. I am unable to understand lower origin part and the syntax of the first two lines.

norm = LogNorm(image.mean() + 0.5 * image.std(), image.max(), clip='True', 
               cmap=cm.gray, origin="lower")

image is a numpy array here. How to pass these norm and cmap parameters in matplotlib to plt.show or imshow()?

This doesn't work:

imshow(image, cmap=cm.gray, LogNorm(......))
Was it helpful?

Solution

Does this work?

from matplotlib import colors, cm, pyplot as plt

norm = colors.LogNorm(image.mean() + 0.5 * image.std(), image.max(), clip='True')
plt.imshow(image, cmap=cm.gray, norm=norm, origin="lower")

This creates a special colormap that ranges from image.mean() + 0.5 * image.std() to image.max() using a logarithmic scale. More general information is here: colors and specifically: LogNorm

The origin='lower' means that the [0,0] element (the 'origin') of the array is shown in the lower left part of the figure. Normally the origin of an array is in the upper left.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top