锋哥原创的Matplotlib3 Python数据可视化视频教程:
https://www.bilibili.com/video/BV1UhtuzcEqX/
课程介绍
本课程讲解利用python进行数据可视化 科研绘图-Matplotlib,学习Matplotlib图形参数基本设置,绘图参数及主要函数,以及Matplotlib基础绘图,和Matplotlib高级绘图。
图例 (Legend)
图例是数据可视化中不可或缺的元素,用于标识图表中不同数据系列的含义。
最基础用法,线条参数里,加上label线条文字描述属性,然后直接调用plt.legend()方法显示图例;注意,这里图例的显示的位置默认是best最佳位置,尽可能没有线条干扰。还有显示的是所有线条的图例。
import matplotlib
import numpy as np
from matplotlib import pyplot as plt
# 设置matplotlib使用黑体显示中文
matplotlib.rcParams['font.family'] = 'Microsoft YaHei'
# 生成数据
x = np.arange(0, 20, 1)
y1 = (x - 9) ** 2 + 1
y2 = (x + 5) ** 2 + 8
# 绘图
plt.plot(x, y1, label='利润')
plt.plot(x, y2, label='销量')
# 显示图例
plt.legend()
# 显示图片
plt.show()
我们可以通过loc参数来设置图例的位置:
位置字符串 | 数字代码 | 说明 |
---|---|---|
'best' |
0 | 自动选择 |
'upper right' |
1 | 右上角 |
'upper left' |
2 | 左上角 |
'lower left' |
3 | 左下角 |
'lower right' |
4 | 右下角 |
'center' |
10 | 正中央 |
比如设置 plt.legend(loc='upper right')
则图例显示到右上角:
假如我们有多条线,只想显示部分线的图例,这时候我们需要通过handles属性手动设置图例。
我们看下下方示例:
import matplotlib
import numpy as np
from matplotlib import pyplot as plt
# 设置matplotlib使用黑体显示中文
matplotlib.rcParams['font.family'] = 'Microsoft YaHei'
# 生成数据
x = np.arange(0, 20, 1)
y1 = (x - 9) ** 2 + 1
y2 = (x + 5) ** 2 + 8
# 绘图
line1, = plt.plot(x, y1, label='利润')
line2, = plt.plot(x, y2, label='销量')
# 显示图例 只显示线条1
plt.legend(handles=[line1])
# 显示图片
plt.show()
运行效果:
还有更多细粒度图例设置参数。
参数 | 类型 | 说明 | 示例 |
---|---|---|---|
loc | str/int | 图例位置(默认 'best' ) |
loc='upper left' , loc=2 |
bbox_to_anchor | tuple | 与 loc 配合调整位置 |
(1.05, 1) (图例外侧) |
ncol | int | 图例列数(默认为1列) | ncol=2 (分两列显示) |
title | str | 图例标题 | title='Functions' |
fontsize | str/float | 字体大小 | fontsize=12 , 'small' |
frameon | bool | 是否显示边框 | frameon=False |
shadow | bool | 是否显示阴影 | shadow=True |
facecolor | str | 背景颜色 | facecolor='#f0f0f0' |
edgecolor | str | 边框颜色 | edgecolor='blue' |
fancybox | bool | 圆角边框 | fancybox=False (直角) |