You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除或调整xarray quiver绘图自动生成的quiverkey

xarray绘制quiver矢量图时自动生成quiverkey的问题解决

问题描述

使用xarray的plot.quiver()方法绘制矢量图时,会默认自动生成quiverkey,和手动通过ax.quiverkey()添加的自定义key重复;且自动生成的key样式固定、容易超出绘图边界,触发保存图片时的尺寸报错,通过色块遮挡的临时方案维护成本较高。
问题复现代码:

wnd = xr.merge([u, v])
fig, ax = plt.subplots()
wnd_plot  = wnd.plot.quiver(
            x = "latitude", y = "level",
            ax = ax,
            u='v', v='w',
            width=0.0025 ,headaxislength=2,headlength=4,headwidth=4,
            scale=200, colors="dimgray", clip_on = False)
qv_key = ax.quiverkey(wnd_plot, 0.94,1.03,5,r'5',labelpos='N', labelsep =0.05, color='dimgray')

运行后会出现两个quiverkey,效果如下:
双quiverkey效果示例

方案1:直接关闭自动生成的quiverkey(推荐)

xarray的quiver绘图方法提供了原生参数控制quiverkey的生成,调用时传入add_guide=False即可完全禁用自动绘制的quiverkey,不会产生重复key,原有手动添加自定义key的代码无需修改。
修改后代码:

wnd = xr.merge([u, v])
fig, ax = plt.subplots()
wnd_plot  = wnd.plot.quiver(
            x = "latitude", y = "level",
            ax = ax,
            u='v', v='w',
            width=0.0025 ,headaxislength=2,headlength=4,headwidth=4,
            scale=200, colors="dimgray", clip_on = False,
            add_guide=False # 新增该行关闭自动quiverkey
            )
qv_key = ax.quiverkey(wnd_plot, 0.94,1.03,5,r'5',labelpos='N', labelsep =0.05, color='dimgray')

方案2:直接修改自动生成quiverkey的样式

如果不想手动编写quiverkey代码,可直接获取xarray自动生成的quiverkey实例,修改其位置、样式参数,不需要额外叠加色块遮挡。xarray返回的quiver对象将自动生成的key存储在_quiverkey属性中,直接修改对应属性即可完成自定义:

wnd = xr.merge([u, v])
fig, ax = plt.subplots()
wnd_plot  = wnd.plot.quiver(
            x = "latitude", y = "level",
            ax = ax,
            u='v', v='w',
            width=0.0025 ,headaxislength=2,headlength=4,headwidth=4,
            scale=200, colors="dimgray", clip_on = False
            )
# 提取自动生成的quiverkey实例
auto_qkey = wnd_plot._quiverkey
# 调整位置(坐标为轴域相对坐标,取值0-1对应轴的左下到右上边界)
auto_qkey.X = 0.94
auto_qkey.Y = 1.03
# 调整key对应的矢量长度、标签文本
auto_qkey.U = 5
auto_qkey.label = r'5'
# 调整标签位置、与key的间距
auto_qkey.labelpos = 'N'
auto_qkey.labelsep = 0.05
# 调整key颜色
auto_qkey.color = 'dimgray'

补充提示

如果调整key位置后仍偶发保存时报尺寸错误,可在plt.savefig()中传入bbox_inches='tight'参数,自动适配裁切绘图边界,避免多余空白触发报错。色块遮挡属于临时方案,会增加不必要的绘图元素,提升后续布局调整的成本,不推荐使用。


内容的提问来源于stack exchange,提问作者Grace Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 23:21:48