在Python中修改xarray图图例

问题描述 投票:0回答:1

我刚开始使用 xarray 的绘图功能,我通常使用 matplotlib。

我正在尝试移动 xarray.plot.scatter 创建的图例。能够删除图例标题也很酷。

data.plot.scatter(x = 'HGT', y = var, hue = 'time', add_guide = True)

如果我通过 ax.legend 制作单独的图例,当 add_guide = False 时,我的图例顺序会变得混乱。我的绘图用不同的颜色标记不同的时间对(hours2 - hours1),并且顺序对于易于理解非常重要。

ax.legend(labels, bbox_to_anchor=(-1.15, 2.4, -1., .102), loc='lower left', ncol = 6)

因此,我试图更好地了解如何修改图例 xarray.plot.scatter,但到目前为止我很难找到有关它的信息。有什么建议么? :)

python plot python-xarray
1个回答
0
投票

这会将现有图例替换为具有相同句柄、标签字符串和标题字符串的新图例。您可以传入对

Axes.legend()
有效的任何关键字参数,甚至可以覆盖旧图例的句柄/标签/标题。不会从旧图例继承任何其他属性,包括旧标签或标题的字体属性。如果您有多个图例,或者图例绑定到图形而不是轴,则这可能不起作用。

def modify_legend(axes, **kwargs):
    oldleg = axes.get_legend()
    props = dict(
        handles=oldleg.legend_handles,
        labels=[t.get_text() for t in oldleg.texts],
        title=oldleg.get_title().get_text()
    )
    props.update(kwargs) # kwargs takes precedence over props
    axes.legend(**props)
    return

使用示例:

data.plot.scatter(x = 'HGT', y = var, hue = 'time', add_guide = True)
ax = plt.gca()
modify_legend(
    ax,
    bbox_to_anchor=(-1.15, 2.4, -1., .102),
    loc='lower left',
    ncol=6,
    title=None # removes the title, as requested
)
© www.soinside.com 2019 - 2024. All rights reserved.