Как разложить значения x с неравномерной осью в matplotlib?

1
from matplotlib import pyplot as plt
import numpy as np

x = np.linspace(448312,497812,100)
y = np.linspace(7188379,7986879,1598)
z = np.random.rand(100,1598)
interp_method = "sinc"
fig, axs = plt.subplots()
axs.imshow(z, interpolation=interp_method, cmap='viridis', extent= (x[0], x[-1], y[0], y[-1]))
axs.set_title(str(interp_method))
plt.show()

# the image is on https://imgur.com/ZYIkqAw

В предыдущем коде создается тепловая карта, которая не совсем читаема, есть ли способ "расширить" ось x без создания интерполированных значений? Я попробовал несколько подходов, но все не удалось. Я изменил figsize (failed), я изменил оси с помощью:

axs=plt.axes([.65, .6,  10, 10], facecolor='k',aspect='equal')

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

Я проверил следующие ссылки, но я не мог получить то, что могло бы помочь:

Как изменить интервал между тиками в matplotlib?

Как добавить пространство между метками и осями в matplotlib?

https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.set_aspect.html

Спасибо заранее всем :) Любая помощь очень ценится

  • 0
    Вы играли с aspect аргументом imshow ?
  • 0
    да я уже пробовал "равных" безрезультатно ..
Показать ещё 1 комментарий
Теги:
matplotlib

1 ответ

1
Лучший ответ

Если вам нужен квадратный сюжет:

axs.imshow(z, interpolation=interp_method, cmap='viridis', extent= (x[0], x[-1], y[0], y[-1]), aspect="auto")

Обратите внимание, что это тот же код, что и ваш, просто imshow() аргумент aspect="auto" в imshow().

Здесь изображение: https://imgur.com/a/PsiwpqL

  • 0
    Большое спасибо друг !! работает как шарм!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню