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常用随机数与随机字符串方法实例
Apr 09 Python
Python简单生成随机数的方法示例
Mar 31 Python
pytorch 数据集图片显示方法
Jul 26 Python
Python Pandas分组聚合的实现方法
Jul 02 Python
解决python多行注释引发缩进错误的问题
Aug 23 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
Jun 02 Python
OpenCV+python实现实时目标检测功能
Jun 24 Python
keras 模型参数,模型保存,中间结果输出操作
Jul 06 Python
Django DRF APIView源码运行流程详解
Aug 17 Python
python文本处理的方案(结巴分词并去除符号)
May 26 Python
Django框架之路由用法
Jun 10 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错误提示的关闭方法详解
2013/06/23 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
JavaScript 格式字符串的应用
2010/03/29 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
js中的this关键字详解
2013/09/25 Javascript
Javascript事件实例详解
2013/11/06 Javascript
基于Jquery实现键盘按键监听
2014/05/11 Javascript
百度判断手机终端并自动跳转js代码及使用实例
2014/06/11 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
详解js中的apply与call的用法
2016/07/30 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
H5+css3+js搭建带验证码的登录页面
2020/10/11 Javascript
Python中使用dom模块生成XML文件示例
2015/04/05 Python
Python迭代器和生成器定义与用法示例
2018/02/10 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
深入浅析Python科学计算库Scipy及安装步骤
2019/10/12 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
Python 去除字符串中指定字符串
2020/03/05 Python
个人简历自荐信
2013/12/05 职场文书
关于赌博的检讨书
2014/01/24 职场文书
新员工试用期自我鉴定
2014/04/17 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
总经理助理岗位职责
2015/01/31 职场文书
python 如何执行控制台命令与操作剪切板
2021/05/20 Python
快速学习Oracle触发器和游标
2021/06/30 Oracle