使用 cartopy 绘制地球的二进制地图

Using cartopy to plot a binary map of Earth

我正在尝试使用 cartopy 绘制只有 2 种颜色的地球地图。例如,陆地以白色填充,海洋以黑暗填充。现在,我使用创建大陆轮廓的 coastlines() 方法,但我不知道如何用一种颜色填充它们,或者用一种颜色填充海洋。

 import matplotlib.pyplot as plt

 fig = plt.figure(figsize=(12,6))
 ax = fig.add_subplot(1,1,1,projection = ccrs.EckertIV())
 ax.clear()
 cs = ax.contourf(longitude,lattitude,A,transform=ccrs.PlateCarree(),
    cmap='gist_gray',alpha=0.3)#,extend = 'both')
 ax.coastlines(color = 'black')

它生成了一张带有大陆的地图,但它全是白色的,除了黑色的海岸线。 关于如何用颜色填充大陆 and/or 海洋有什么想法吗? 我考虑过使用 stock_img() 方法,但它不能用一种颜色均匀地填充土地。

提前致谢!

PS :这是我的第一个 post 所以请告诉我您是否需要更精确地解决我的问题,或者我是否需要以某种方式编辑我的 post

这是一个最小的例子。在您的示例中,您没有显示您的 longitudelatitudeA 数据,所以我只是用简单的一行替换。

import matplotlib.pyplot as plt
import cartopy
import cartopy.crs as ccrs

latitude = [0, 10]
longitude = [0, 20]

fig = plt.figure(figsize=(12, 6))
ax = fig.add_subplot(1, 1, 1, projection=ccrs.EckertIV())

ax.set_global()
# set_extent([-180, 180, -90, 90], crs=ccrs.PlateCarree())

ax.patch.set_facecolor(color='black')
# or
# ax.background_patch.set_facecolor(color='black')   # cartopy < v0.18
# or
# ax.add_feature(cartopy.feature.OCEAN, color='black')

ax.add_feature(cartopy.feature.LAND, color='white')

ax.plot(longitude, latitude, color='red', transform=ccrs.PlateCarree())

您正在使用 EckertIV 投影,因此您必须通知坐标轴您的经度和纬度值参考了 PlateCarree 投影。这就是为什么你必须在 set_extent 中使用 crs kw(如果不使用 set_global)和在 plot.

中使用 transform kw