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中模拟enum枚举类型的5种方法分享
Nov 22 Python
Anaconda入门使用总结
Apr 05 Python
目前最全的python的就业方向
Jun 05 Python
Python 删除连续出现的指定字符的实例
Jun 29 Python
Python3匿名函数用法示例
Jul 25 Python
对python中的os.getpid()和os.fork()函数详解
Aug 08 Python
python监控nginx端口和进程状态
Sep 06 Python
tensorflow如何继续训练之前保存的模型实例
Jan 21 Python
Win10里python3创建虚拟环境的步骤
Jan 31 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
Python matplotlib修改默认字体的操作
Mar 05 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
Apr 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 文章调用类代码
2011/08/11 PHP
PHP禁止页面缓存的代码
2011/10/23 PHP
php多文件上传实现代码
2014/02/20 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
详解PHP队列的实现
2019/03/14 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
Javascript实现禁止输入中文或英文的例子
2014/12/09 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
基于jquery插件实现拖拽删除图片功能
2020/08/27 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
快速解决js开发下拉框中blur与click冲突
2016/10/10 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
基于vue2实现上拉加载功能
2017/11/28 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
微信小程序制作表格的方法
2019/02/14 Javascript
vue基础知识--axios合并请求和slot
2020/06/04 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
python实现的简单窗口倒计时界面实例
2015/05/05 Python
python取余运算符知识点详解
2019/06/27 Python
python3多线程知识点总结
2019/09/26 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
使用HTML5进行SVG矢量图形绘制的入门教程
2016/02/19 HTML / CSS
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
幼儿园校车司机的岗位职责
2014/01/30 职场文书
自主招生推荐信范文
2014/05/10 职场文书
县级文明单位申报材料
2014/05/23 职场文书
土建施工员岗位职责
2014/07/16 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
2015年法院工作总结范文
2015/04/28 职场文书
社会实践心得体会范文
2016/01/14 职场文书
浅谈JavaScript作用域
2021/12/06 Javascript
angular异步验证器防抖实例详解
2022/03/31 Javascript