python matplotlib实现将图例放在图外

作者:Johnson0722 时间:2021-11-19 06:55:45 

关于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坐标(默认轴坐标)中为图例指定任意位置。

来源:https://blog.csdn.net/John_xyz/article/details/54754937

标签:python,matplotlib,图例,图外
0
投稿

猜你喜欢

  • 解决Pytorch修改预训练模型时遇到key不匹配的情况

    2022-11-29 15:43:43
  • SQL Server 性能调优之查询从20秒至2秒的处理方法

    2024-01-24 14:01:56
  • 详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案

    2024-04-29 13:25:38
  • MySQL 数据备份与还原的示例代码

    2024-01-28 15:09:50
  • 超级给力的JavaScript的React框架入门教程

    2024-06-05 09:55:04
  • 在Spring中用select last_insert_id()时遇到问题

    2009-05-24 19:50:00
  • pandas中的ExcelWriter和ExcelFile的实现方法

    2023-09-20 00:10:36
  • Java读取properties文件连接数据库的方法示例

    2024-01-13 15:17:24
  • 置信椭圆原理以及椭圆图形绘制方式

    2021-04-24 04:25:04
  • Python中遇到的小问题及解决方法汇总

    2023-10-14 04:58:35
  • Golang排列组合算法问题之全排列实现方法

    2023-07-14 14:16:19
  • 解决SecureCRT通过SSH连接Ubuntu时vi命令有多余的m的问题

    2023-11-19 19:32:24
  • 初学vue出现空格警告的原因及其解决方案

    2024-05-09 09:51:40
  • Golang设计模式工厂模式实战写法示例详解

    2024-05-25 15:11:42
  • python之pyqt5通过按钮改变Label的背景颜色方法

    2021-04-03 22:59:52
  • Java+mysql本地图片上传数据库及下载示例

    2023-07-23 19:49:13
  • python3实现用turtle模块画一棵随机樱花树

    2023-11-30 06:04:07
  • [多图]新:60个国外创意404页面设计

    2008-12-05 12:00:00
  • python 矢量数据转栅格数据代码实例

    2022-06-12 03:40:14
  • Python 中的参数传递、返回值、浅拷贝、深拷贝

    2022-10-12 12:59:16
  • asp之家 网络编程 m.aspxhome.com