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深入学习之上下文管理器
Aug 31 Python
Django的分页器实例(paginator)
Dec 01 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
Apr 17 Python
python selenium自动上传有赞单号的操作方法
Jul 05 Python
Python 字符串与二进制串的相互转换示例
Jul 23 Python
Python常见MongoDB数据库操作实例总结
Jul 24 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
Feb 08 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
Nov 11 Python
Python2 与Python3的版本区别实例分析
Mar 30 Python
Python使用itcaht库实现微信自动收发消息功能
Jul 13 Python
PyQt5的相对布局管理的实现
Aug 07 Python
python 实现性别识别
Nov 21 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代码
2011/11/27 PHP
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
使用XHGui来测试PHP性能的教程
2015/07/03 PHP
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
php如何计算两坐标点之间的距离
2018/12/29 PHP
基于Jquery制作的幻灯片图集效果打包下载
2011/02/12 Javascript
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
微信小程序开发之入门实例教程篇
2017/03/07 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
值得收藏的八个常用的js正则表达式
2018/10/19 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
2020/08/14 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
关于Js中new操作符的作用详解
2021/02/21 Javascript
Python 用户登录验证的小例子
2013/03/06 Python
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
python对常见数据类型的遍历解析
2019/08/27 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
python脚本和网页有何区别
2020/07/02 Python
python入门教程之基本算术运算符
2020/11/13 Python
利用css3径向渐变做一张优惠券的示例
2018/03/22 HTML / CSS
团队精神口号
2014/06/06 职场文书
党委领导班子整改方案
2014/09/30 职场文书
班主任2015新年寄语
2014/12/08 职场文书
2016年大学生社会实践心得体会
2015/10/09 职场文书