【问题标题】:Using cartopy to plot a binary map of Earth使用 cartopy 绘制地球的二进制地图
【发布时间】:2020-06-03 20:01:59
【问题描述】:

我正在尝试使用 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')

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

提前谢谢你!

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

【问题讨论】:

    标签: python dictionary matplotlib cartopy


    【解决方案1】:

    这是一个最小的例子。在您的示例中,您没有显示您的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。

    【讨论】:

    • 哇,非常感谢。我不知道patch.set_facecolor函数,它会超级有用的!
    • 你好@Zeyta,如果这个答案解决了你的问题,请将答案标记为正确(绿色检查图像)。
    • 另外,您也可以只使用 OCEAN 层:ax.add_feature(cartopy.feature.OCEAN, color='black'),而不是使用 ax.patch.set_facelor 更改轴背景颜色
    • @marceolandrioni 是的,我将其标记为正确,感谢您提醒我。我将尝试使用 OCEAN 层,但您的第一个答案已经足以满足我的需要!再次感谢您
    猜你喜欢
    • 2022-08-05
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    相关资源
    最近更新 更多