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

2024-04-19 21:49:57 发布

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

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

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

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

提前谢谢你

PS:这是我的第一篇帖子,所以请告诉我你是否需要对我的问题更加精确,或者我是否需要以某种方式编辑我的帖子


Tags: 方法地球颜色地图fig绘制pltax
1条回答
网友
1楼 · 发布于 2024-04-19 21:49:57

这里是一个最小的例子。在您的示例中,您没有显示什么是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投影。这就是为什么必须在{}中使用{}千瓦(如果不使用{})和在{}中使用{}千瓦的原因

enter image description here

相关问题 更多 >