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实现简单的计时器功能函数
Mar 14 Python
python中zip和unzip数据的方法
May 27 Python
python的mysqldb安装步骤详解
Aug 14 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
Sep 08 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
Python给你的头像加上圣诞帽
Jan 04 Python
python实现DEM数据的阴影生成的方法
Jul 23 Python
在python3中使用shuffle函数要注意的地方
Feb 28 Python
Python3爬虫发送请求的知识点实例
Jul 30 Python
Python如何给函数库增加日志功能
Aug 04 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
Sep 11 Python
python中round函数保留两位小数的方法
Dec 04 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获得url参数中具有&的值的方法
2014/03/05 PHP
Zend Framework实现多服务器共享SESSION数据的方法
2016/03/22 PHP
客户端静态页面玩分页
2006/06/26 Javascript
浮动的div自适应居中显示的js代码
2013/12/23 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
ie8模式下click无反应点击option无反应的解决方法
2014/10/11 Javascript
jQuery给动态添加的元素绑定事件的方法
2015/03/09 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
在 Express 中使用模板引擎
2015/12/10 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
angularjs $http调用接口的方式详解
2018/08/13 Javascript
nuxt踩坑之Vuex状态树的模块方式使用详解
2019/09/06 Javascript
node脚手架搭建服务器实现token验证的方法
2021/01/20 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python抓取京东商城手机列表url实例代码
2013/12/18 Python
python进阶教程之文本文件的读取和写入
2014/08/29 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
python版百度语音识别功能
2019/07/09 Python
Python实现中值滤波去噪方式
2019/12/18 Python
基于numpy中的expand_dims函数用法
2019/12/18 Python
如何基于python实现归一化处理
2020/01/20 Python
连锁经营管理专业大学生求职信
2013/10/30 职场文书
归元寺导游词
2015/02/06 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python
总结Java对象被序列化的两种方法
2021/06/30 Java/Android
css中有哪些方式可以隐藏页面元素及区别
2022/06/16 HTML / CSS
MySQL 原理与优化之Update 优化
2022/08/14 MySQL