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中的对象与类型
Dec 11 Python
python实现微信跳一跳辅助工具步骤详解
Jan 04 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
Apr 18 Python
基于python历史天气采集的分析
Feb 14 Python
深入理解Django-Signals信号量
Feb 19 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
Feb 19 Python
python 实现方阵的对角线遍历示例
Nov 29 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
Dec 12 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
Jan 14 Python
Pycharm中切换pytorch的环境和配置的教程详解
Mar 13 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 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
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
apache mysql php 源码编译使用方法
2012/05/03 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
CI框架实现cookie登陆的方法详解
2016/05/18 PHP
网页设计常用的一些技巧
2006/12/22 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
2016/03/05 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
2018/01/08 jQuery
VUE 使用中踩过的坑
2018/02/08 Javascript
微信小程序上线发布流程图文详解
2019/05/06 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
Python分支结构(switch)操作简介
2018/01/17 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
python 实现rolling和apply函数的向下取值操作
2020/06/08 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
H5混合开发app如何升级的方法
2018/01/10 HTML / CSS
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
建筑工地资料员岗位职责
2015/04/13 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
部门主管竞聘书
2015/09/15 职场文书
SQL Server数据定义——模式与基本表操作
2021/04/05 SQL Server
Golang全局变量加锁的问题解决
2021/05/08 Golang
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL
Python绘制散乱的点构成的图的方法
2022/04/21 Python
mysql性能优化以及配置连接参数设置
2022/05/06 MySQL