как сделать линии карты видимыми поверх данных в картопи? - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь сделать линии карты всегда поверх данных, но не могу найти правильную команду / опции для этого в картопии. На графике ниже, я хочу, чтобы толстая синяя линия «под» черными линиями, но поверх бежевых.

Код:

import matplotlib.pyplot as plt
import numpy as np
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import os,sys

conus_proj = ccrs.LambertConformal(central_longitude=-96,central_latitude=39.0)
fig = plt.figure(figsize=(10,8))
ax = fig.add_subplot(1,1,1,projection=conus_proj)
ax.set_extent([-120,-70,22,50])
#ax.add_feature(cfeature.BORDERS)
ax.add_feature(cfeature.COASTLINE)
ax.add_feature(cfeature.OCEAN, facecolor='#CCFEFF')
ax.add_feature(cfeature.LAKES, facecolor='#CCFEFF')
ax.add_feature(cfeature.RIVERS, facecolor='#CCFEFF')
ax.add_feature(cfeature.LAND, facecolor='#FFE9B5')
state_borders = cfeature.NaturalEarthFeature(category='cultural', name='admin_1_states_provinces_lakes', scale='50m', facecolor='#FFE9B5')
ax.add_feature(state_borders, edgecolor='black')

plt.plot([-120,-70],[35,45],linewidth=8, transform=ccrs.PlateCarree())
plt.show()

Я пытался изменить zorder ax.add_feature(state_borders...) и plt.plot(...), но получил странные результаты. Границы состояния по умолчанию находятся сверху с pcolormesh, но не с plt.plot

. Вот результат вышеприведенного кода: enter image description here

1 Ответ

1 голос
/ 07 ноября 2019

Причина, по которой все обстоит иначе для pcolormesh и plot, заключается в том, что они имеют разные zorders по умолчанию. Если я установлю zorder для границ штатов (обратите внимание, что я использую встроенную поддержку Cartopy для штатов) на 10, я получу их отображение в верхней части графика:

import matplotlib.pyplot as plt
import numpy as np
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import os,sys

conus_proj = ccrs.LambertConformal(central_longitude=-96,central_latitude=39.0)
fig = plt.figure(figsize=(10,8))
ax = fig.add_subplot(1,1,1,projection=conus_proj)
ax.set_extent([-120,-70,22,50])

ax.add_feature(cfeature.COASTLINE)
ax.add_feature(cfeature.OCEAN, facecolor='#CCFEFF')
ax.add_feature(cfeature.LAKES, facecolor='#CCFEFF')
ax.add_feature(cfeature.RIVERS, edgecolor='#CCFEFF')
ax.add_feature(cfeature.LAND, facecolor='#FFE9B5')
ax.add_feature(cfeature.STATES, edgecolor='black', zorder=10)

plt.plot([-120,-70],[35,45],linewidth=8, transform=ccrs.PlateCarree())
plt.show()

Мне также пришлосьудалите цвета лица на некоторых функциях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...