Изменить диапазон без масштабирования в матплоте

У меня есть вопрос, я делаю программу, которая отображает увеличенную область Перу, но показанная ось находится в диапазоне изображения (например, 7000x7500), но я хочу быть в диапазоне UTM (например, ось X между 500000-600000 и ось Y 9500000-9700000) Я пытался с помощью plt.set_xlim а также plt.sety_lim но безуспешно, я думаю, что я должен использовать plt.autoscale(False) но это также не сработало, или я использовал это неправильно.

Я создаю фигуру и оси из основной программы

f = plt.figure(figsize=(5,5))
axe = f.add_axes([0, 0, 1, 1])

это функция, которую я вызываю каждый раз, когда я хочу построить

def plotear(self, mapa):

    axe.clear()
    axe.imshow(mapa, cmap='gray', interpolation='nearest')
    axe.set_xlim(0,10000) #This is just for testing
    axe.set_ylim(0,10000) #This is just for testing
    plt.autoscale(False)
    self.canvas.draw()


Редактировать: @ImportanceOfBeingErnest ответ сработал, как и ожидалось! Теперь у меня возникла другая проблема: на холсте я показываю изображение, оси X и Y не отображаются правильно, вот пример изображения, как я могу это исправить? Благодарю.

1 ответ

Решение

От imshow документация вы найдете, что есть аргумент extent который может быть использован для масштабирования изображения.

extent: скаляры (слева, справа, снизу, сверху), необязательно, по умолчанию: нет
Расположение в координатах данных нижнего левого и верхнего правого углов. Если None, изображение располагается так, что центры пикселей попадают в индексы, основанные на нулях (строка, столбец).

В этом случае вы бы использовали его как

ax.imshow(mapa, extent=[5e5, 6e5, 9.5e6, 9.7e6])


Ответ на отредактированный вопрос:
В случае, если изображение слишком велико, это, вероятно, вызвано тем, что вы установили axe = f.add_axes([0, 0, 1, 1]), Вы должны скорее использовать ax = fig.add_subplot(111) и если поля не так, как вы хотите, настройте plt.subplots_adjust( ... ) с соответствующими расстояниями.

Другие вопросы по тегам