Python 在地图边缘(cartopy)打印热量数据(使用pcolormesh或类似工具)失败

Python 在地图边缘(cartopy)打印热量数据(使用pcolormesh或类似工具)失败,python,matplotlib,plot,cartopy,Python,Matplotlib,Plot,Cartopy,我想在地图上绘制热量数据(Cartopy投影),但是在地图的边缘,不管数组大小如何,都会创建一个单元格帧。注意,最左边和最右边的列具有相同的值 代码: 结果1: 结果二:运行您提供的代码对我来说效果很好,生成了一个带有透明pcolormesh的地图。我相信这是理想的结果 您还有一个围栏柱问题,这可能是导致问题的原因。请注意,虽然制作了一个10 x 10的单元网格,但在一个10 x 10的网格中指定了lon和lat,该网格包括端点,而不是网格的中心。这将混淆网格。你能试试吗 lat = np.l

我想在地图上绘制热量数据(Cartopy投影),但是在地图的边缘,不管数组大小如何,都会创建一个单元格帧。注意,最左边和最右边的列具有相同的值

代码:

结果1:


结果二:

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

您还有一个围栏柱问题,这可能是导致问题的原因。请注意,虽然制作了一个10 x 10的单元网格,但在一个10 x 10的网格中指定了lon和lat,该网格包括端点,而不是网格的中心。这将混淆网格。你能试试吗

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

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

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

您还有一个围栏柱问题,这可能是导致问题的原因。请注意,虽然制作了一个10 x 10的单元网格,但在一个10 x 10的网格中指定了lon和lat,该网格包括端点,而不是网格的中心。这将混淆网格。你能试试吗

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

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

这是一个绝对有效的点!然而,后续问题是,当单元格网格的端点超出地图的“边界”(边界表示纬度:-90,90和长度:-180180)时,将创建一个单元格框架,并且这些单元格也被环绕,这不是期望的结果。作为一个例子,在上面的代码中,我只更改了带有lat和lon的行,如下所示:
lat=np.linspace(-95,95,heat_data.shape[1]+1)lon=np.linspace(-185,185,heat_data.shape[0]+1)
简而言之,我想绘制一个网格,其端点可能位于地图之外。在球体的上下文中,数据超出边界是没有物理意义的。北纬95度在哪里?您可能需要更多地考虑传递给cartopy的数据。它无法对未映射到球体的数据执行任何合理的操作,从而导致意外行为。如果你真的想从坐标限制之外输入数据,我建议在脚本尝试打印之前捕获/剪切脚本中的数据。这绝对是一个有效点!然而,后续问题是,当单元格网格的端点超出地图的“边界”(边界表示纬度:-90,90和长度:-180180)时,将创建一个单元格框架,并且这些单元格也被环绕,这不是期望的结果。作为一个例子,在上面的代码中,我只更改了带有lat和lon的行,如下所示:
lat=np.linspace(-95,95,heat_data.shape[1]+1)lon=np.linspace(-185,185,heat_data.shape[0]+1)
简而言之,我想绘制一个网格,其端点可能位于地图之外。在球体的上下文中,数据超出边界是没有物理意义的。北纬95度在哪里?您可能需要更多地考虑传递给cartopy的数据。它无法对未映射到球体的数据执行任何合理的操作,从而导致意外行为。如果您真的想从坐标限制之外输入数据,我建议在脚本尝试打印之前捕获/剪切脚本中的数据。