Сетка графика Matplotlib как цветовая карта только в определенной области графика

Я надеюсь, что это не было опубликовано раньше: я должен изобразить разницу в высоте с течением времени с изображением горы. Но я должен отображать цветовую карту только в определенной области (черная линия). Я получаю цветовую карту, используя сетку за 2 разных года и вычисляя разницу в высоте.

Мой результат:

plt.imshow(bild1, extent = [-1100,-200, 1500, 2100], cmap = "Greys_r")
plt.imshow(grid_delta, cmap = "jet", vmin = -5, vmax = 17, origin = "lower", extent = [-1100,-200,1500,2100])
plt.colorbar(boundaries = bounds, ticks = bounds)
plt.plot(studienbereich_x, studienbereich_y, "black", label="Studienbereich", linewidth = 2)
plt.xlim(-1100, -200)
plt.ylim(1500, 2100)
plt.savefig("example.png")

Вот что я получаю: https://imgur.com/xgufo2M

Вот что я должен получить: https://imgur.com/12RIIim

Я также попытался выяснить точки данных внутри необходимой области перед интерполяцией сетки, но в конце концов это не очень хорошо соответствовало области.


person C.Joe    schedule 24.01.2018    source источник
comment
По сути, решение здесь может быть похоже на этот. Другие варианты заключаются в том, чтобы установить пиксели за пределами интересующей области на nan. Не забудьте поделиться тем, что вы пробовали. Также прочитайте и поймите минимально воспроизводимый пример.   -  person ImportanceOfBeingErnest    schedule 24.01.2018


Ответы (1)


Измените код на следующий, это может решить вашу проблему:

fig = plt.imshow(
    grid_delta,
    cmap="jet",
    vmin=-5,
    vmax=17,
    origin="lower",
    extent=[-1100,-200,1500,2100]
)
cbar = plt.colorbar(fig)

Ссылка: https://matplotlib.org/examples/pylab_examples/colorbar_tick_labelling_demo.html

person Xiaodan Xu    schedule 24.01.2018
comment
Я не вижу, чтобы cbar определялось или использовалось где-либо в коде OP. Как именно это решит его проблему? - person Goodbye StackExchange; 24.01.2018
comment
Наверняка это не ответ на вопрос. С другой стороны, без минимального воспроизводимого примера здесь можно получить любой ответ. Еще одна причина включить такой пример, чтобы можно было проверить потенциальные решения. - person ImportanceOfBeingErnest; 25.01.2018