Функция Matplotlib imshow zoom?

У меня есть несколько (27) изображений, представленных в 2D-массивах, которые я просматриваю с помощью imshow (). Мне нужно приблизить то же самое место в каждом изображении. Я знаю, что могу увеличить масштаб вручную, но это утомительно и недостаточно точно. Есть ли способ программно указать конкретный раздел изображения для показа вместо всего?

Вы можете использовать plt.xlim и plt.ylim чтобы настроить область для построения:

 import matplotlib.pyplot as plt import numpy as np data=np.arange(9).reshape((3,3)) plt.imshow(data) plt.xlim(0.5, 1.5) plt.ylim(0.5,1.5) plt.show() 

Если вам не нужна остальная часть вашего изображения, вы можете определить функцию, которая обрезает изображение в нужных координатах, а затем отображать обрезанное изображение.

Примечание: здесь «x» и «y» представляют собой визуальные x и y (соответственно горизонтальная ось и вертикальная ось на изображении), что означает, что она инвертируется по сравнению с реальными x (строка) и y (столбец) NumPy массив.

 import scipy as sp import numpy as np import matplotlib.pyplot as plt def crop(image, x1, x2, y1, y2): """ Return the cropped image at the x1, x2, y1, y2 coordinates """ if x2 == -1: x2=image.shape[1]-1 if y2 == -1: y2=image.shape[0]-1 mask = np.zeros(image.shape) mask[y1:y2+1, x1:x2+1]=1 m = mask>0 return image[m].reshape((y2+1-y1, x2+1-x1)) image = sp.lena() image_cropped = crop(image, 240, 290, 255, 272) fig = plt.figure() ax1 = fig.add_subplot(121) ax2 = fig.add_subplot(122) ax1.imshow(image) ax2.imshow(image_cropped) plt.show()