figure of imshow() is too small

matplotlib, numpy, python

Solution

If you don't give an `aspect` argument to `imshow`, it will use the value for `image.aspect` in your `matplotlibrc`. The default for this value in a new `matplotlibrc` is `equal`. So `imshow` will plot your array with equal aspect ratio.

If you don't need an equal aspect you can set `aspect` to `auto`

imshow(random.rand(8, 90), interpolation='nearest', aspect='auto')

which gives the following figure

If you want an equal aspect ratio you have to adapt your `figsize` according to the aspect

fig, ax = subplots(figsize=(18, 2))
ax.imshow(random.rand(8, 90), interpolation='nearest')
tight_layout()

which gives you:

Problem

I'm trying to visualize a numpy array using imshow() since it's similar to imagesc() in Matlab. ``` imshow(random.rand(8, 90), interpolation='nearest') ``` The resulting figure is very small at the center of the grey window, while most of the space is unoccupied. How can I set the parameters to make the figure larger? I tried figsize=(xx,xx) and it's not what I want. Thanks!

Original source