python折线图加图例_python – 将图例添加到LineCollection图

@ ubuntu的回答是正确的方法,如果你有少量的行. (如果你想添加一个传奇,你可能会这样做!)

但是,为了显示其他选项,您仍然可以使用LineCollection,您只需要使用“代理艺术家”作为图例:

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.collections import LineCollection

from matplotlib.lines import Line2D

# The line format you curently have:

lines = [[(0, 1, 2, 3, 4), (4, 5, 6, 7, 8)],

[(0, 1, 2, 3, 4), (0, 1, 2, 3, 4)],

[(0, 1, 2, 3, 4), (8, 7, 6, 5, 4)],

[(4, 5, 6, 7, 8), (0, 1, 2, 3, 4)]]

# Reformat it to what `LineCollection` expects:

lines = [zip(x, y) for x, y in lines]

z = np.array([0.1, 9.4, 3.8, 2.0])

fig, ax = plt.subplots()

lines = LineCollection(lines, array=z, cmap=plt.cm.rainbow, linewidths=5)

ax.add_collection(lines)

fig.colorbar(lines)

# Manually adding artists doesn't rescale the plot, so we need to autoscale

ax.autoscale()

def make_proxy(zvalue, scalar_mappable, **kwargs):

color = scalar_mappable.cmap(scalar_mappable.norm(zvalue))

return Line2D([0, 1], [0, 1], color=color, **kwargs)

proxies = [make_proxy(item, lines, linewidth=5) for item in z]

ax.legend(proxies, ['Line 1', 'Line 2', 'Line 3', 'Line 4'])

plt.show()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值