Python matplotlib画图时图例说明(legend)放到图像外侧详解


Posted in Python onMay 16, 2020

用python的matplotlib画图时,往往需要加图例说明。如果不设置任何参数,默认是加到图像的内侧的最佳位置。

import matplotlib.pyplot as plt
import numpy as np
 
x = np.arange(10)
 
fig = plt.figure()
ax = plt.subplot(111)
 
for i in xrange(5):
 ax.plot(x, i * x, label='$y = %ix$' % i)
 
plt.legend()
 
plt.show()

这样的结果如图所示:

Python matplotlib画图时图例说明(legend)放到图像外侧详解

如果需要将该legend移到图像外侧,有多种方法,这里介绍一种。

在plt.legend()函数中加入若干参数:

plt.legend(bbox_to_anchor=(num1, num2), loc=num3, borderaxespad=num4)

bbox_to_anchor(num1,num2)表示legend的位置和图像的位置关系,num1表示水平位置,num2表示垂直位置。num1=0表示legend位于图像的左侧垂直线(这里的其它参数设置:num2=0,num3=3,num4=0)。

Python matplotlib画图时图例说明(legend)放到图像外侧详解

num1=1表示legend位于图像的右侧垂直线(其它参数设置:num2=0,num3=3,num4=0)。

Python matplotlib画图时图例说明(legend)放到图像外侧详解

为了美观,需要将legend放于图像的外侧,而又距离不是太大,一般设num1=1.05。

num2=0表示legend位于图像下侧水平线(其它参数设置:num1=1.05,num3=3,num4=0)。

Python matplotlib画图时图例说明(legend)放到图像外侧详解

num2=1表示legend位于图像上侧水平线(其它参数设置:num1=1.05,num3=3,num4=0)。

Python matplotlib画图时图例说明(legend)放到图像外侧详解

所以,如果希望legend位于图像的右下,需要将num2设为0,位于图像的右上,需要将num2设为1。

由于legend是一个方框,bbox_to_anchor=(num1, num2)相当于表示一个点,那么legend的哪个位置位于这个点上呢。参数num3就用以表示哪个位置位于该点。

loc参数对应
Location String Location Code
'best' 0
'upper right' 1
'upper left' 2
'lower left' 3
'lower right' 4
'right' 5
'center left' 6
'center right' 7
'lower center' 8
'upper center' 9
'center' 10

所以,当设bbox_to_anchor=(1.05,0),即legend放于图像右下角时,为美观起见,需要将legend的左下角,即'lower left'放置该点,对应该表的‘Location Code'数字为3,即参数num3置为3或直接设为‘lower left';而当设bbox_to_anchor=(1.05,1),即legend放于图像右上角时,为美观起见,需要将legend的左上角,即'upper left'放置该点,对应该表的‘Location Code'数字为2,即参数num3置为2或直接设为‘upper left'。

根据参考网址上的解释,参数num4表示轴和legend之间的填充,以字体大小距离测量,默认值为None,但实际操作中,如果不加该参数,效果是有一定的填充,下面有例图展示,我这里设为0,即取消填充,具体看个人选择。

这是将legend放于图像右下的完整代码:

import matplotlib.pyplot as plt
import numpy as np
 
x = np.arange(10)
 
fig = plt.figure()
ax = plt.subplot(111)
 
for i in xrange(5):
 ax.plot(x, i * x, label='$y = %ix$' % i)
 
plt.legend(bbox_to_anchor=(1.05, 0), loc=3, borderaxespad=0)
 
plt.show()

效果展示:

Python matplotlib画图时图例说明(legend)放到图像外侧详解

这里legend的‘lower left'置于(1.05, 0)的位置。

如果不加入参数num4,那么效果为:

Python matplotlib画图时图例说明(legend)放到图像外侧详解

legend稍靠上,有一定的填充。

这是将legend放于图像右上的完整代码:

import matplotlib.pyplot as plt
import numpy as np
 
x = np.arange(10)
 
fig = plt.figure()
ax = plt.subplot(111)
 
for i in xrange(5):
 ax.plot(x, i * x, label='$y = %ix$' % i)
 
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0)
 
plt.show()

效果展示:

Python matplotlib画图时图例说明(legend)放到图像外侧详解

这里legend的‘upper left'置于(1.05, 0)的位置。

如果不加入参数num4,那么效果为:

Python matplotlib画图时图例说明(legend)放到图像外侧详解

legend稍靠下。

以上这篇Python matplotlib画图时图例说明(legend)放到图像外侧详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过索引遍历列表的方法
May 04 Python
Python中IPYTHON入门实例
May 11 Python
Python常见格式化字符串方法小结【百分号与format方法】
Sep 18 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
Sep 26 Python
python实现校园网自动登录的示例讲解
Apr 22 Python
Python零基础入门学习之输入与输出
Apr 03 Python
python实现简易学生信息管理系统
Apr 05 Python
使用Fabric自动化部署Django项目的实现
Sep 27 Python
python、PyTorch图像读取与numpy转换实例
Jan 13 Python
django2.2 和 PyMySQL版本兼容问题
Feb 17 Python
使用pytorch 筛选出一定范围的值
Jun 28 Python
python 利用百度API识别图片文字(多线程版)
Dec 14 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
May 16 #Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 #Python
Python验证码截取识别代码实例
May 16 #Python
基于plt.title无法显示中文的快速解决
May 16 #Python
基于python生成英文版词云图代码实例
May 16 #Python
解决Python数据可视化中文部分显示方块问题
May 16 #Python
Python使用Excel将数据写入多个sheet
May 16 #Python
You might like
php中动态修改ini配置
2014/10/14 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
PHP中上传文件打印错误错误类型分析
2019/04/14 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
jQuery1.6 类型判断实现代码
2011/09/01 Javascript
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
jquery 清空file域示例(兼容个浏览器)
2013/10/11 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
我的NodeJs学习小结(一)
2014/07/06 NodeJs
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
JavaScript中pop()方法的使用教程
2015/06/09 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
使用Node.js配合Nginx实现高负载网络
2015/06/28 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
form表单转Json提交的方法(推荐)
2016/09/23 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
angular6开发steps步骤条组件
2019/07/04 Javascript
JS实现压缩上传图片base64长度功能
2019/12/03 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
[01:14]2019完美世界城市挑战赛(秋季赛)全国总决赛精彩花絮
2020/01/08 DOTA
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
2015/08/16 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
opencv实现图像几何变换
2021/03/24 Python
《可爱的动物》教学反思
2014/02/22 职场文书
机械系毕业生求职信
2014/05/28 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
绿里奇迹观后感
2015/06/15 职场文书
小学生暑假安全保证书
2015/07/13 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
2021/08/30 Java/Android