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语言中的按位运算符
Nov 26 Python
python实现的简单抽奖系统实例
May 22 Python
如何在Python中编写并发程序
Feb 27 Python
Python中的time模块与datetime模块用法总结
Jun 30 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
Jan 29 Python
对python3 urllib包与http包的使用详解
May 10 Python
python3.4控制用户输入与输出的方法
Oct 17 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
Apr 17 Python
详解Django admin高级用法
Nov 06 Python
python实现一个点绕另一个点旋转后的坐标
Dec 04 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 Python
Python基于Faker假数据构造库
Nov 30 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
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
php中邮箱地址正则表达式实现与详解
2012/04/24 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
PHP 验证登陆类分享
2015/03/13 PHP
php多重接口的实现方法
2015/06/20 PHP
你不知道的文件上传漏洞php代码分析
2016/09/29 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
基于JavaScript实现生成名片、链接等二维码
2015/09/20 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
react实现同页面三级跳转路由布局
2019/09/26 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
vue全局使用axios的操作
2020/09/08 Javascript
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
python函数的5种参数详解
2017/02/24 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
python数据挖掘需要学的内容
2019/06/23 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
Python获取时间戳代码实例
2019/09/24 Python
Python箱型图处理离群点的例子
2019/12/09 Python
python爬虫请求头设置代码
2020/07/28 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
软件测试题目
2013/02/27 面试题
计算机专业自荐信
2015/03/05 职场文书
合作合同协议书
2016/03/21 职场文书
Python3.10的一些新特性原理分析
2021/09/15 Python