Изменить диапазон без масштабирования в матплоте
У меня есть вопрос, я делаю программу, которая отображает увеличенную область Перу, но показанная ось находится в диапазоне изображения (например, 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( ... )
с соответствующими расстояниями.