Как вы обрезаете линии сетки, чтобы они не отображались над континентами с картографией?

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

Я на Python 3, использую cartopy 0.17 и matplotlib 3.1.1.

from cartopy.crs import PlateCarree
import matplotlib.pyplot as plt

fig = plt.figure()

ax = fig.add_axes((0, 0, 1, 1), projection=PlateCarree())

ax.gridlines()
ax.coastlines()

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

Я также пробовал рисовать некоторые данные, используя ax.contourf, и я получаю то же самое: линии сетки появляются поверх непрозрачных цветов, созданных данными. Так что дело не только в том, что coastlines рисует только контур.


person darth_mall    schedule 01.08.2019    source источник


Ответы (1)


Это тот результат, который вы хотите?

from cartopy.crs import PlateCarree
import cartopy
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_axes((0, 0, 1, 1), projection=PlateCarree())
ax.add_feature(cartopy.feature.LAND, facecolor='white', zorder=1)
ax.add_feature(cartopy.feature.COASTLINE)
ax.gridlines(zorder=0)
person afb    schedule 01.08.2019