使用xarray绘制Quiverplot时右上角出现数字标记的问题咨询
xarray quiver绘图右上角异常带数字点的解决方法
问题描述
使用xarray的Dataset调用plot.quiver()绘制矢量图时,绘图区域外的右上角会出现一个带数字的异常点。经排查,该问题与数据内容无关,排除cartopy坐标轴、陆地特征、图层、网格线等因素后,最简代码仍可复现该问题。
复现代码
import xarray as xr import matplotlib.pyplot as plt import os # 创建测试Dataset U = [[1,2],[3,4]] V = [[3,4],[1,2]] latitude = [[30,31],[29,30]] longitude = [[-5,-6],[-4,-8]] Along = [1,2] Across = [6,7] B = xr.Dataset( data_vars=dict(U=(['Along','Across'], U), V=(['Along','Across'], V)), coords=dict( latitude=(['Along','Across'], latitude), longitude=(['Along','Across'], longitude), Along=(Along), Across=(Across) ) ) # 绘图并保存,异常点在保存的图片中更明显 B.plot.quiver(x='longitude', y='latitude', u='U', v='V') plt.savefig(os.path.join(r'S:\System files\OneDrive\Pulpit', 'output.png'), dpi=150, pad_inches=0.1)
问题原因
这个带数字的点并非异常bug,而是matplotlib quiver默认生成的箭标图例(quiver key),默认位置设置在绘图区域外的右上角,因此看起来像无关的异常点。
解决方法
有两种常用处理方式:
- 调整图例位置:将箭标图例放到绘图区域内,避免超出显示范围
B.plot.quiver( x='longitude', y='latitude', u='U', v='V', quiver_kw={'key': {'loc': 'lower left'}} # 可替换为其他合法位置,如'upper right' ) - 隐藏箭标图例:如果不需要该图例,直接关闭显示
B.plot.quiver( x='longitude', y='latitude', u='U', v='V', quiver_kw={'key': None} )
内容的提问来源于stack exchange,提问作者Rychnowski
相关产品推荐
相关产品推荐

