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 相关文章推荐
pycharm远程调试openstack代码
Nov 21 Python
python logging日志模块以及多进程日志详解
Apr 18 Python
python实现类之间的方法互相调用
Apr 29 Python
Python使用try except处理程序异常的三种常用方法分析
Sep 05 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
Oct 17 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
Oct 22 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
Oct 29 Python
Django的models中on_delete参数详解
Jul 16 Python
对Django 转发和重定向的实例详解
Aug 06 Python
python dumps和loads区别详解
Feb 04 Python
Python生成器传参数及返回值原理解析
Jul 22 Python
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
May 26 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
cache_lite试用
2007/02/14 PHP
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
自己写了一个php检测文件编码的函数
2014/04/21 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
php头像上传预览实例代码
2017/05/02 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
javascript hashtable实现代码
2009/10/13 Javascript
理解JavaScript中的对象 推荐
2011/01/09 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
redux中间件之redux-thunk的具体使用
2018/04/17 Javascript
javascript动态创建对象的属性详解
2018/11/07 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
python实现simhash算法实例
2014/04/25 Python
python格式化字符串实例总结
2014/09/28 Python
Django框架下在URLconf中指定视图缓存的方法
2015/07/23 Python
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
Python3实现统计单词表中每个字母出现频率的方法示例
2019/01/28 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
python3 sleep 延时秒 毫秒实例
2020/05/04 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
html5 video全屏播放/自动播放的实现示例
2020/08/06 HTML / CSS
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
最新的大学生找工作自我评价
2013/09/29 职场文书
初中语文教学反思
2014/02/02 职场文书
质量月口号
2014/06/20 职场文书
教师个人培训总结
2015/02/11 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
python 利用PyAutoGUI快速构建自动化操作脚本
2021/05/31 Python
每日六道java新手入门面试题,通往自由的道路
2021/06/30 Java/Android