如何在quiver矢量图中添加指定模长的参考矢量作为图例
你用的xarray plot.quiver 是对matplotlib原生quiver接口的封装,直接调用matplotlib自带的quiverkey方法就能实现带模长标注的矢量参考标尺,和你要的目标效果完全匹配。
实现步骤
- 先把quiver绘图的返回对象存为变量,后续添加图例需要调用这个对象
- 调用
ax.quiverkey配置参考矢量的位置、对应模长、标注文本即可
修改后的完整代码
# 存储quiver绘图对象 q = D.mean(dim='TIME').plot.quiver( x="lon", y="lat", u="SOZOTAUX1", v="SOMETAUY1", scale=0.37 # 保持原有比例尺参数不变,保证图例长度和图内矢量匹配 ) ax.coastlines() ax.axes.get_xaxis().set_visible(True) ax.axes.get_yaxis().set_visible(True) # 添加矢量参考图例 ax.quiverkey( q, X=0.9, # 图例X轴相对位置(0为轴最左,1为轴最右) Y=1.03, # 图例Y轴相对位置(0为轴最下,1为轴最上,1.03即放在图框外右上角) U=0.2, # 参考矢量对应的模长数值,根据你的数据单位调整 label='0.2 N/m²',# 图例显示的标注文本,和上面U的数值保持对应 labelpos='E', # 标注文本放在箭头的右侧(东方向) coordinates='axes', fontproperties={'size': 10}, color='black', backgroundcolor='white' # 加白色背景避免和图内元素重叠,和参考图效果一致 )
参数调整说明
- 原有绘图的
scale=0.37参数不要改动,quiverkey会自动匹配该比例尺,保证参考箭头长度和图内同模长的矢量长度完全一致 X/Y的数值可以根据你的图幅尺寸微调,避免和坐标轴标签、标题重叠U和label可以根据你的实际需求修改,比如要做0.1 N/m²、0.5 N/m²的标尺直接替换对应值即可- 如果需要调整箭头粗细、标注和箭头的间距,可以额外加
width、labelsep参数配置,完全匹配参考样式。
内容的提问来源于stack exchange,提问作者Sougata
相关产品推荐
相关产品推荐

