# Matplotlib 系列之「Legend 图例」

Matplotlib 的 Legend 图例就是为了帮助我们展示每个数据对应的图像名称，更好的让读者认识到你的数据结构。

```import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,50)
y1=2*x+1
y2=x**2

plt.figure(num=3,figsize=(8,5))
l1=plt.plot(x,y2)
l2=plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')

plt.legend(handles=[l1,l2],labels=['up','down'],loc='best')

plt.xlabel('x')
plt.ylabel('y')

plt.xlim((-1,2))
plt.ylim((-2,3))

new_ticks=np.linspace(-1,2,5)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,1.22,3],

ax=plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))

plt.show()```

Title 为图像标题，Axis 为坐标轴, Label 为坐标轴标注，Tick 为刻度线，Tick Label 为刻度注释，Legend 为图例。

#### 设置 Legend 图例

```# 设置 legend 图例
l1,=plt.plot(x,y1,label='linear line')
l2,=plt.plot(x,y2,color='red',linewidth=1.0,linestyle='--',label='square line')

plt.legend()```

```handles, labels = ax.get_legend_handles_labels()
ax.legend(handles, labels)```

`plt.legend(handles=[l1, l2])`

`plt.legend(handles=[l1, l2], labels=['up', 'down'])`

#### 图例的位置

`plt.legend(handles=[l1, l2], labels=['up', 'down'],  loc='lower right')`

##### Legend 常见参数速查表

Keyword

Description

loc

Location code string, or tuple (see below)

fontsize

the font size (used only if prop is not specified)

prop

the font property

markerscale

the relative size of legend markers vs. original

markerfirst

If True (default), marker is to left of the label

numpoints

the number of points in the legend for line

scatterpoints

he number of points in the legend for scatter plot

scatteroffsets

a list of yoffsets for scatter symbols in legend

frameon

If True, draw the legend on a patch (frame)

If True, draw a shadow behind legend

framealpha

Transparency of the frame

edgecolor

Frame edgecolor

facecolor

Frame facecolor

fancybox

If True, draw the frame with a round fancybox

ncol

number of columns

the fractional whitespace inside the legend border

handlelength

the length of the legend hendles

The pad between the legend handle and text

the pad between the axes and legend border

columnspacing

the spacing between columns

title

the legend title

bbox_to_anchor

the bbox that the legend will be anchored

bbox_tansform

the transform for the bbox,transAxes if None

#### 图例处理器

• 使用`handler_map`关键字中的值更新`get_legend_handler_map()`
• 检查句柄是否在新创建的`handler_map`中。
• 检查句柄的类型是否在新创建的`handler_map`中。
• 检查句柄的`mro`中的任何类型是否在新创建的`handler_map`中。

```import matplotlib.pyplot as plt
from matplotlib.legend_handler import HandlerLine2D

# 设置legend图例
l1,=plt.plot(x,y1,marker = 'o',label='linear line')
l2,=plt.plot(x,y2,color='red',linewidth=1.0,marker = 'o',label='square line')

plt.legend(handler_map = {l1:HandlerLine2D(numpoints=4)},handles=[l1, l2], labels=['up', 'down'],  loc='lower right')```

0 条评论

• ### Matplotlib 系列之「绘制函数图像」

matplotlib 是 python 最著名的绘图库，它提供了一整套和 matlab 相似的命令 API，十分适合交互式进行绘图。

• ### Python数据分析之糗事百科第二弹

data1为段子信息，data2为用户信息，二个表都有用户url，我们可以将其merge。

• ### 机器学习：Python测试线性可分性的方法

? 线性和非线性分类 两个子集是线性可分的,如果存在一个超平面将每组的元素的所有元素的一组驻留在另一侧的超平面其他设置。我们可以描述它在2D绘图中通过分离线,...

• ### kafka主题offset各种需求修改方法

简要：开发中，常常因为需要我们要认为修改消费者实例对kafka某个主题消费的偏移量。具体如何修改？为什么可行？其实很容易，有时候只要我们换一种方式思考，如果...

• ### 机器学习之最小二乘法

1.背景:      1801年，意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星。经过40天的跟踪观测后，由于谷神星运行至太阳背后，使得皮亚齐失去了谷神星...

• ### 数据可视化-Matplotlib生成堆栈图

今天我们将学习如何在Matplotlib中创建堆栈图。有时这些被称为区域图表。这些与饼图类似，但它们不是在一个瞬间显示比例，而是随着时间的推移显示“整体的部分”...

• ### 英法将联合推动人工智能发展

英国和法国已经同意在科技、人工智能和网络安全方面展开更紧密的合作，两国宣布计划在2018年召开一次数字会议，以促进学术界、业界和政府之间的跨渠道合作。

• ### 【Mockplus教程】安装Mockplus

MAC上安装Mockplus 1 下载 进入摩客官网桌面端下载页面，选择MAC版本下载； 2 安装 下载完成后，打开dmg包，将Mockplus图标拖...