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绘制人人网好友关系图示例
Apr 01 Python
Python实现在Linux系统下更改当前进程运行用户
Feb 04 Python
python基础教程之五种数据类型详解
Jan 12 Python
python计算两个地址之间的距离方法
Jun 09 Python
python实现字符串完美拆分split()的方法
Jul 16 Python
自定义django admin model表单提交的例子
Aug 23 Python
python 初始化一个定长的数组实例
Dec 02 Python
Python读取文件内容为字符串的方法(多种方法详解)
Mar 04 Python
在echarts中图例legend和坐标系grid实现左右布局实例
May 16 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
Jun 15 Python
django美化后台django-suit的安装配置操作
Jul 12 Python
Python中常见的导入方式总结
May 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中pack、unpack的详细用法
2018/03/12 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
JS简单实现城市二级联动选择插件的方法
2015/08/19 Javascript
jquery实现删除一个元素后面的所有元素功能
2015/12/21 Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
2016/08/31 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
python分割和拼接字符串
2013/11/01 Python
python抓取最新博客内容并生成Rss
2015/05/17 Python
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
python基于pyDes库实现des加密的方法
2017/04/29 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
微信跳一跳小游戏python脚本
2018/01/05 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
2018/05/22 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
python后端接收前端回传的文件方法
2019/01/02 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
幼儿园母亲节活动方案
2014/03/10 职场文书
环保建议书作文
2014/03/12 职场文书
植树节标语
2014/06/27 职场文书
快递员岗位职责
2014/09/12 职场文书
小学生教师节广播稿
2015/08/19 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python