如何使地图线在cartopy中的数据上可见?

2024-09-29 17:23:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使地图线始终位于数据之上,但在cartopy中找不到这样做的正确命令/选项。在下面的情节中,我想在黑色的州线下,在米色的州线上画一条蓝色的粗线。你知道吗

代码:

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()

我试过改变ax.add_feature(state_borders...)plt.plot(...)的顺序,但得到了奇怪的结果。默认情况下,pcolormesh的州边界位于顶部,但plt.plot的州边界似乎不是这样

以下是上述代码的输出: enter image description here


Tags: 代码importaddplotaspltaxfeature
1条回答
网友
1楼 · 发布于 2024-09-29 17:23:38

对于pcolormeshplot来说,结果不同的原因是它们有不同的默认zorder。如果我将州边界的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()

我还得去掉一些特征上的面部颜色。你知道吗

相关问题 更多 >

    热门问题