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/Flask 开发服务器上使用 HTTPS
Jul 03 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
Nov 17 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
python直接获取API传递回来的参数方法
Dec 17 Python
在python中将字符串转为json对象并取值的方法
Dec 31 Python
Falsk 与 Django 过滤器的使用与区别详解
Jun 04 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
Python3将jpg转为pdf文件的方法示例
Dec 13 Python
pycharm中import呈现灰色原因的解决方法
Mar 04 Python
使用Keras实现简单线性回归模型操作
Jun 12 Python
Django框架请求生命周期实现原理
Nov 13 Python
TensorFlow低版本代码自动升级为1.0版本
Feb 20 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
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
php实现异步数据调用的方法
2015/12/24 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
PHP实现二维数组中的查找算法小结
2018/06/09 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
用Jquery实现多级下拉框无刷新的联动
2010/12/22 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
JavaScript动态添加style节点的方法
2015/06/09 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
2018/11/05 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
2019/05/16 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
Python中splitlines()方法的使用简介
2015/05/20 Python
Python实现在线音乐播放器
2017/03/03 Python
python实时监控cpu小工具
2018/06/21 Python
Python从入门到精通之环境搭建教程图解
2019/09/26 Python
安装python及pycharm的教程图解
2019/10/10 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
包装类的功能、种类、常用方法
2012/01/27 面试题
社区维稳工作方案
2014/06/06 职场文书
2014年个人债务授权委托书范本
2014/09/22 职场文书
2016年社会主义核心价值观心得体会
2016/01/21 职场文书