Python. Matplotlib. Как преобразовать оси матрицы в координаты

#python-3.x #matplotlib #coordinates #axes

#python-3.x #matplotlib #координаты #оси

Вопрос:

я впервые задаю этот вопрос на этом портале, поэтому прошу прощения, если я сделал что-то не так.

У меня есть три списка, которые представляют координаты x, y, z следующим образом:

X_grid = [[], [], …, []]

Y_grid = [[], [], …, []]

Z_grid = [[], [], …, []]

У меня определено значение NODATA_value, которое находится внутри списка Z_grid, для точек, где у меня нет значения измерения.

Проблема в том, что я не могу изменить оси x, y графика так, чтобы вместо указания значения положения элемента в матрице они указывали координаты x, y.

Важно, чтобы каждая точка была нарисована в виде квадрата, а не прямоугольника, поскольку они представляют пиксели.

Я прилагаю код, который у меня есть прямо сейчас. Я был бы очень признателен, если бы кто-нибудь помог мне в этом.

[текущий результат]https://ibb.co/kyzCtBK

 def visualizar_grid(X_grid, Y_grid, Z_grid, NODATA_value, name_DTM):
    import numpy as np
    import matplotlib.pyplot as plt

    grid = Z_grid
    for i in range(len(Z_grid)):
        for j in range(len(Z_grid[0])):
            if Z_grid[i][j] == NODATA_value:
                grid[i][j] = grid[i][j]*np.nan

    plt.matshow(grid[::-1], cmap = 'jet')
    plt.gca().invert_yaxis()

    plt.colorbar()
    plt.grid()
    plt.title(name_DTM)
    image = plt.show()

    return image

  

Комментарии:

1. Возможно, вы ищете аргумент ключевого слова imshow extent .

2. Привет, спасибо за ответ, но я думаю, что этот путь неправильный или, по крайней мере, самый короткий.

3. Ммм, не уверен, что заставляет тебя так думать. Но если у вас есть какие-либо указания на то, extent что это не лучший / корректный способ манипулирования диапазоном данных изображения, не стесняйтесь предоставлять дополнительные подробности.