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 获取本机ip地址的两个方法
Feb 25 Python
python用ConfigObj读写配置文件的实现代码
Mar 04 Python
python实现代理服务功能实例
Nov 15 Python
python类参数self使用示例
Feb 17 Python
利用python模拟实现POST请求提交图片的方法
Jul 25 Python
Python中的单行、多行、中文注释方法
Jul 19 Python
python爬取网易云音乐评论
Nov 16 Python
python TF-IDF算法实现文本关键词提取
May 29 Python
通过字符串导入 Python 模块的方法详解
Oct 27 Python
numpy.linalg.eig() 计算矩阵特征向量方式
Nov 29 Python
Django之富文本(获取内容,设置内容方式)
May 21 Python
使用Python实现微信拍一拍功能的思路代码
Jul 09 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
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
推荐几个开源的微信开发项目
2014/12/28 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
javascript Array数组对象的扩展函数代码
2010/05/22 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
2015/10/23 Javascript
JavaScript识别网页关键字并进行描红的方法
2015/11/09 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
微信小程序 页面跳转及数据传递详解
2017/03/14 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
jQuery实现模糊查询的方法分析
2018/05/10 jQuery
微信小程序实现城市列表选择
2018/06/05 Javascript
vue里面使用mui的弹出日期选择插件实例
2018/09/16 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
Python实现密码薄文件读写操作
2019/12/16 Python
PyQt实现计数器的方法示例
2021/01/18 Python
装饰资料员岗位职责
2013/12/30 职场文书
乡镇干部十八大感言
2014/02/17 职场文书
岗位聘任书范文
2014/03/29 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
2015年化工厂工作总结
2015/05/04 职场文书
小学教师见习总结
2015/06/23 职场文书
小学思品教学反思
2016/02/20 职场文书
导游词之五台山
2019/10/11 职场文书