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应用程序在windows下不出现cmd窗口的办法
May 29 Python
Python里隐藏的“禅”
Jun 16 Python
python内存管理分析
Apr 08 Python
Python 的内置字符串方法小结
Mar 15 Python
python中defaultdict的用法详解
Jun 07 Python
python将txt文件读入为np.array的方法
Oct 30 Python
python实现Flappy Bird源码
Dec 24 Python
python3.4爬虫demo
Jan 22 Python
python 读取文件并把矩阵转成numpy的两种方法
Feb 12 Python
Python常用的json标准库
Feb 19 Python
在pytorch中查看可训练参数的例子
Aug 18 Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 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 5.3新特性命名空间规则解析及高级功能
2010/03/11 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
php实现微信公众号无限群发
2015/10/11 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
自写的一个jQuery圆角插件
2010/10/26 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
2017/04/28 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
2018/08/13 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
王纯业的Python学习笔记 下载
2007/02/10 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
python 编程之twisted详解及简单实例
2017/01/28 Python
详解如何设置Python环境变量?
2019/05/13 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
Django框架 信号调度原理解析
2019/09/04 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
Python-numpy实现灰度图像的分块和合并方式
2020/01/09 Python
tensorflow-gpu安装的常见问题及解决方案
2020/01/20 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
HTML5中微数据概述及在搜索引擎中的使用举例
2013/02/07 HTML / CSS
2014年端午节活动方案
2014/03/11 职场文书
相亲活动方案
2014/08/26 职场文书
开学随笔
2015/08/15 职场文书
保姆聘用合同
2015/09/21 职场文书
教师网络培训心得体会
2016/01/09 职场文书