Подтвердить что ты не робот

Рисунок imshow() слишком мал

Я пытаюсь визуализировать массив numpy с помощью imshow(), поскольку он похож на imagesc() в Matlab.

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

Полученная фигура очень маленькая в центре серого окна, в то время как большая часть пространства не занята. Как настроить параметры для увеличения фигуры? Я попробовал figsize = (xx, xx), и это не то, что я хочу. Спасибо!

4b9b3361

Ответ 1

Если вы не укажете аргумент aspect для imshow, он будет использовать значение для image.aspect в вашем matplotlibrc. Значение по умолчанию для этого значения в новом matplotlibrc равно equal. Таким образом, imshow построит массив с равным соотношением сторон.

Если вам не нужен одинаковый аспект, вы можете установить aspect в auto

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

который дает следующий рисунок

imshow-auto

Если вы хотите равное соотношение сторон, вам нужно адаптировать ваш figsize в соответствии с аспектом

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

который дает вам:

imshow-equal

Ответ 2

Это странно, это определенно работает для меня:

from matplotlib import pyplot as plt

plt.figure(figsize = (20,2))
plt.imshow(random.rand(8, 90), interpolation='nearest')

Я использую бэкэнд "MacOSX", кстати.

Ответ 3

Я тоже новичок в python. Вот что-то похожее на то, что вы хотите сделать

axes([0.08, 0.08, 0.94-0.08, 0.94-0.08]) #[left, bottom, width, height]
axis('scaled')`

Я считаю, что это решает размер холста.