gpt4 book ai didi

python - 在 basemap 中填充海洋

转载 作者:行者123 更新时间:2023-11-28 17:09:36 25 4
gpt4 key购买 nike

<分区>

我正在尝试在 matplotlib.Basemap 上绘制 1x1 度数据,我想用白色填充海洋。但是,为了让海洋的边界遵循 matplotlib 绘制的海岸线,白色海洋掩模的分辨率应该比我的数据的分辨率高得多。

找了半天我尝试了两种可能的解决方案:

(1) maskoceans()is_land() 函数,但由于我的数据分辨率低于 basemap 绘制的 map ,所以边缘看起来不太好.我也不想将我的数据插入到更高分辨率。

(2) m.drawlsmask(),但由于无法分配 zorder,因此 pcolormesh 图始终覆盖掩码。

这段代码

import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.basemap as bm

#Make data
lon = np.arange(0,360,1)
lat = np.arange(-90,91,1)
data = np.random.rand(len(lat),len(lon))

#Draw map
plt.figure()
m = bm.Basemap(resolution='i',projection='laea', width=1500000, height=2900000, lat_ts=60, lat_0=72, lon_0=319)
m.drawcoastlines(linewidth=1, color='white')
data, lon = bm.addcyclic(data,lon)
x,y = m(*np.meshgrid(lon,lat))
plt.pcolormesh(x,y,data)
plt.savefig('1.png',dpi=300)

生成此图像: result of the above code

添加 m.fillcontinents(color='white') 生成以下图像,这是我需要的,但要填充海洋而不是陆地。 same as above, but with countries drawn on top

编辑:

m.drawmapboundary(fill_color='lightblue') 也会填充陆地,因此不能使用。

期望的结果是海洋是白色的,而我用 plt.pcolormesh(x,y,data) 绘制的内容显示在陆地上。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com