Cartopy:散点数据绘图层的渲染顺序

13

我正在尝试使用Cartopy(见下方代码)在地图上绘制多个点的位置(散点图)。当我尝试渲染图表时,数据点被呈现在LAND层后面。但是我想在LAND层上绘制我的散点数据...我做错了什么?

Cartopy版本:0.12.x,Matplotlib版本:1.4.2

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature 

ax = plt.axes(projection=ccrs.PlateCarree()) 
ax.set_extent([125, 150, 35, 63])         

ax.stock_img()

ax.add_feature(cfeature.LAND) #If I comment this => all ok, but I need 
ax.add_feature(cfeature.LAKES)
ax.add_feature(cfeature.RIVERS)
ax.coastlines()

ax.scatter(yc,xc,transform=ccrs.PlateCarree()) #yc, xc -- lists or numpy arrays

plt.show()

LAND层下显示的点

没有LAND层的绘图


2
尝试在散点图的调用中指定一个数值型的“zorder”。 - Paul H
谢谢!设置“zorder”解决了问题! - bubble
1
@PaulH - 你介意把这个作为答案吗? - pelson
@pelson的回答已经发布。 - Paul H
1个回答

14

大多数(如果不是全部)matplotlib绘图函数都有一个zorder参数来指定绘制顺序。

较低的zorder将首先绘制,因此较高的zorder会出现在上层。

因此,通过传递zorder=xxx来排列图层。


1
@pelson 或 @paul-h - 我只是好奇,为什么会这样呢?直觉上我会认为如果 plt.scatterax.add_feature 之后调用,散点图应该会在最上层。我曾经遇到过类似 OP 的问题,不得不指定 zorder=2 - decvalts
1
@decvalts,如果没有检查cartopy源代码以检查默认的zorder是什么,我无法告诉您。我现在没有时间,所以我鼓励您这样做。 - Paul H

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接