在地图Cartopy的边缘绘制热数据使用pcolormesh或类似颜色失败

问题描述

我想在地图上绘制热量数据(cartopy投影),但是在地图的边缘,无论阵列的大小如何,都会创建一个细胞框架。注意,最左边和最右边的列具有相同的值。

代码

import cartopy.crs as ccrs
import matplotlib.pyplot as @R_502_6411@
import numpy as np

ax = @R_502[email protected](projection=ccrs.PlateCarree())
ax.set_global()
ax.coastlines()

heat_data = np.random.rand(10,10)
lat = np.linspace(-90,90,heat_data.shape[1])
lon = np.linspace(-180,180,heat_data.shape[0])
ax.pcolormesh(lon,lat,np.transpose(heat_data),alpha = 0.2)
@R_502[email protected]()

结果1:Result without transparency of the array (first and last columns have identical values)

结果2:Result with transparent array

解决方法

运行您提供的代码对我来说效果很好,生成带有透明pcolormesh的地图。我相信这是理想的结果吗?

OP code and resultant map

您还遇到了可能导致该问题的击剑杆问题。请注意,虽然制作了10 x 10的单元格网格,但在包含端点的10 x 10网格中指定lon和lat,以移动网格的中心。这将使meshgrid混乱。您可以尝试:

lat = np.linspace(-90,90,heat_data.shape[1] +1)
lon = np.linspace(-180,180,heat_data.shape[0] +1)

即将块的边缘设置在所需位置。