python matplotlib实现将图例放在图外


Posted in Python onApril 17, 2020

关于matplotlib如何设置图例的位置?如何将图例放在图外?以及如何在一幅图有多个子图的情况下,删除重复的图例?我用一个简单的例子说明一下。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure(1)
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)

df1 = pd.DataFrame(np.random.randn(3,5),columns = ['one','two','three','four','five'])
df2 = pd.DataFrame(np.random.randn(3,5),columns = ['one','two','three','four','five'])
df3 = pd.DataFrame(np.random.randn(3,5),columns = ['one','two','three','four','five'])
df4 = pd.DataFrame(np.random.randn(3,5),columns = ['one','two','three','four','five'])

df1.plot(ax = ax1, title = "df1", grid = 'on')
df2.plot(ax = ax2, title = "df1", grid = 'on')
df3.plot(ax = ax3, title = "df1", grid = 'on')
df4.plot(ax = ax4, title = "df1", grid = 'on')

plt.show()

运行结果如下

python matplotlib实现将图例放在图外

可以看出,随机生成了几个dataframe,在一个figure()中生成了四个子图,每个子图的图例都是dataframe.columns里的值,那么如何移除这些图例?

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure(1)
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)

df1 = pd.DataFrame(np.random.randn(3,5),columns = ['one','two','three','four','five'])
df2 = pd.DataFrame(np.random.randn(3,5),columns = ['one','two','three','four','five'])
df3 = pd.DataFrame(np.random.randn(3,5),columns = ['one','two','three','four','five'])
df4 = pd.DataFrame(np.random.randn(3,5),columns = ['one','two','three','four','five'])

df1.plot(ax = ax1, title = "df1", grid = 'on')
df2.plot(ax = ax2, title = "df1", grid = 'on')
df3.plot(ax = ax3, title = "df1", grid = 'on')
df4.plot(ax = ax4, title = "df1", grid = 'on')

ax1.legend_.remove()  ##移除子图ax1中的图例
ax2.legend_.remove()  ##移除子图ax2中的图例
ax3.legend_.remove()  ##移除子图ax3中的图例

plt.show()

python matplotlib实现将图例放在图外

可以看出ax1,ax2,ax3中的图例都被移除了,但是上图还不是很美观?有没有什么办法将图例放到图外面呢?请看:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure(1)
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)

df1 = pd.DataFrame(np.random.randn(3,5),columns = ['one','two','three','four','five'])
df2 = pd.DataFrame(np.random.randn(3,5),columns = ['one','two','three','four','five'])
df3 = pd.DataFrame(np.random.randn(3,5),columns = ['one','two','three','four','five'])
df4 = pd.DataFrame(np.random.randn(3,5),columns = ['one','two','three','four','five'])

df1.plot(ax = ax1, title = "df1", grid = 'on')
df2.plot(ax = ax2, title = "df1", grid = 'on')
df3.plot(ax = ax3, title = "df1", grid = 'on')
df4.plot(ax = ax4, title = "df1", grid = 'on')

ax1.legend_.remove()
ax2.legend_.remove()
ax3.legend_.remove()
ax4.legend(loc=2, bbox_to_anchor=(1.05,1.0),borderaxespad = 0.)  ##设置ax4中legend的位置,将其放在图外

plt.show()

python matplotlib实现将图例放在图外

其中参数loc用于设置legend的位置

bbox_to_anchor用于在bbox_transform坐标(默认轴坐标)中为图例指定任意位置。

以上这篇python matplotlib实现将图例放在图外就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Django视图和URL配置详解
Jan 31 Python
Python实现Kmeans聚类算法
Jun 10 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
May 16 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
Jul 01 Python
python networkx 根据图的权重画图实现
Jul 10 Python
python异常触发及自定义异常类解析
Aug 06 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
Jan 04 Python
Python包,__init__.py功能与用法分析
Jan 07 Python
tensorflow 实现数据类型转换
Feb 17 Python
Python ATM功能实现代码实例
Mar 19 Python
pytorch  网络参数 weight bias 初始化详解
Jun 24 Python
python 比较字典value的最大值的几种方法
Apr 17 #Python
Python3 selenium 实现QQ群接龙自动化功能
Apr 17 #Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 #Python
Python 多线程共享变量的实现示例
Apr 17 #Python
matplotlib 对坐标的控制,加图例注释的操作
Apr 17 #Python
matplotlib quiver箭图绘制案例
Apr 17 #Python
更新升级python和pip版本后不生效的问题解决
Apr 17 #Python
You might like
PHP安全配置
2006/10/09 PHP
也谈 PHP 和 MYSQL
2006/10/09 PHP
openPNE常用方法分享
2011/11/29 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
PHP生成sitemap.xml地图函数
2013/11/13 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
php字符串截取函数用法分析
2014/11/25 PHP
jQuery autocomplete插件修改
2009/04/17 Javascript
常用Extjs工具:Extjs.util.Format使用方法
2012/03/22 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
jquery.Callbacks的实现详解
2016/11/30 Javascript
JavaScript实现格式化字符串函数String.format
2016/12/16 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
Vue脚手架编写试卷页面功能
2020/03/17 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
Python中的一些陷阱与技巧小结
2015/07/10 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
教师评优事迹材料
2014/01/10 职场文书
学习保证书范文
2014/04/30 职场文书
司法建议书范文
2014/05/13 职场文书
监督检查工作方案
2014/05/28 职场文书
民生工作实施方案
2014/05/31 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
入党介绍人意见2015
2015/06/01 职场文书
2015入党自传书范文
2015/06/26 职场文书
话题作文之呼唤
2019/12/18 职场文书
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js