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 相关文章推荐
在Python中处理列表之reverse()方法的使用教程
May 21 Python
Django验证码的生成与使用示例
May 20 Python
基于python爬虫数据处理(详解)
Jun 10 Python
Python二叉树的定义及常用遍历算法分析
Nov 24 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 Python
Python实战之制作天气查询软件
May 14 Python
Django stark组件使用及原理详解
Aug 22 Python
python实现的按要求生成手机号功能示例
Oct 08 Python
浅析matlab中imadjust函数
Feb 27 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
Mar 30 Python
python numpy库np.percentile用法说明
Jun 08 Python
python正则表达式 匹配反斜杠的操作方法
Aug 07 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
星际争霸秘籍
2020/03/04 星际争霸
深入PHP empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
javascript克隆对象深度介绍
2012/11/20 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
2017/02/12 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
基于vue+canvas的excel-like组件实例详解
2017/11/28 Javascript
Vue的路由动态重定向和导航守卫实例
2018/03/17 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
python thread 并发且顺序运行示例
2009/04/09 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
Python3 集合set入门基础
2020/02/10 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
2020/03/10 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
2020/04/24 Python
python网络爬虫实现发送短信验证码的方法
2021/02/25 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
什么是serialVersionUID
2016/03/04 面试题
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
木工主管岗位职责
2013/12/08 职场文书
自荐书模板
2013/12/15 职场文书
安全负责人任命书
2014/06/06 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
MySQL 条件查询的常用操作
2022/04/28 MySQL