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 15 Python
python交互式图形编程实例(三)
Nov 17 Python
Django在win10下的安装并创建工程
Nov 20 Python
Python之多线程爬虫抓取网页图片的示例代码
Jan 10 Python
根据DataFrame某一列的值来选择具体的某一行方法
Jul 03 Python
分享一个pycharm专业版安装的永久使用方法
Sep 24 Python
Python 面向对象之封装、继承、多态操作实例分析
Nov 21 Python
pandas-resample按时间聚合实例
Dec 27 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
Jan 16 Python
python手机号前7位归属地爬虫代码实例
Mar 31 Python
深入理解Python 多线程
Jun 16 Python
Python爬虫爬取微信朋友圈
Aug 06 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 数组入门教程小结
2009/05/20 PHP
ThinkPHP模板替换与系统常量及应用实例教程
2014/08/22 PHP
php获取图片信息的方法详解
2015/12/10 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
2014/12/20 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
BootStrap入门教程(三)之响应式原理
2016/09/19 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
2016/12/18 Javascript
Vue组件化通讯的实例代码
2017/06/23 Javascript
JS实现标签滚动切换效果
2017/12/25 Javascript
vue实现微信分享功能
2018/11/28 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
使用layui 的layedit定义自己的toolbar方法
2019/09/18 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
基于hashlib模块--加密(详解)
2017/06/21 Python
Python模块的加载讲解
2019/01/15 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
Python实现制度转换(货币,温度,长度)
2019/07/14 Python
详解python opencv、scikit-image和PIL图像处理库比较
2019/12/26 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
求职意向书
2014/07/29 职场文书
关于保护环境的建议书
2014/08/26 职场文书
质量保证书格式
2015/02/27 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
python pyhs2 的安装操作
2021/04/07 Python
Mysql Online DDL的使用详解
2021/05/20 MySQL