python绘图时如何添加图例_python-如何确定matplotlib图例中的项目顺序?

以下函数查找图例句柄和标签,并根据给定列表对其进行排序或部分排序(cpblUtilities.mathgraph):

# Returns tuple of handles, labels for axis ax, after reordering them to conform to the label order `order`, and if unique is True, after removing entries with duplicate labels.

def reorderLegend(ax=None,order=None,unique=False):

if ax is None: ax=plt.gca()

handles, labels = ax.get_legend_handles_labels()

labels, handles = zip(*sorted(zip(labels, handles), key=lambda t: t[0])) # sort both labels and handles by labels

if order is not None: # Sort according to a given list (not necessarily complete)

keys=dict(zip(order,range(len(order))))

labels, handles = zip(*sorted(zip(labels, handles), key=lambda t,keys=keys: keys.get(t[0],np.inf)))

if unique: labels, handles= zip(*unique_everseen(zip(labels,handles), key = labels)) # Keep only the first of each handle

ax.legend(handles, labels)

return(handles, labels)

def unique_everseen(seq, key=None):

seen = set()

seen_add = seen.add

return [x for x,k in zip(seq,key) if not (k in seen or seen_add(k))]

更新形式的函数位于[https://gitlab.com/cpbl/cpblUtilities/blob/master/mathgraph.py]中的cpblUtilities.mathgraph中

引用:Kevin(本页)和Markus Jarderot(如何在保留订单的同时从列表中删除重复项?)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值