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 相关文章推荐
Pyramid添加Middleware的方法实例
Nov 27 Python
python基础教程之实现石头剪刀布游戏示例
Feb 11 Python
多版本Python共存的配置方法
May 22 Python
基于python时间处理方法(详解)
Aug 14 Python
Python 2.7中文显示与处理方法
Jul 16 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
使用django的objects.filter()方法匹配多个关键字的方法
Jul 18 Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 Python
python如何支持并发方法详解
Jul 25 Python
详解Anaconda 的安装教程
Sep 23 Python
基于python+selenium自动健康打卡的实现代码
Jan 13 Python
Python LMDB库的使用示例
Feb 14 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框架Laravel的小技巧两则
2015/02/10 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
javascript 定义新对象方法
2010/02/20 Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
2019/01/06 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
深入理解JS异步编程-Promise
2019/06/03 Javascript
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
vue实现循环滚动列表
2020/06/30 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
[04:44]DOTA2英雄梦之声_第12期_矮人直升机
2014/06/21 DOTA
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
python中as用法实例分析
2015/04/30 Python
Python找出文件中使用率最高的汉字实例详解
2015/06/03 Python
Djang中静态文件配置方法
2015/07/30 Python
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
python无序链表删除重复项的方法
2020/01/17 Python
python判断元素是否存在的实例方法
2020/09/24 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
教育学专业毕业生的自我评价
2013/11/21 职场文书
单位委托书范本
2014/04/04 职场文书
祖国在我心中演讲稿300字
2014/05/04 职场文书
2014年银行年终工作总结
2014/12/19 职场文书
新闻稿怎么写
2015/07/18 职场文书
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android