首页 > 编程语言 >Python中所有子图标签Legend显示详解

Python中所有子图标签Legend显示详解

时间:2024-12-20 21:31:13浏览次数:4  
标签:axs plt Python 子图 legend 图例 np Legend

在数据可视化中,图例(legend)是一个非常重要的元素,它能够帮助读者理解图表中不同元素的含义。特别是在使用Python进行可视化时,matplotlib库是一个非常强大的工具,能够轻松创建包含多个子图的图表,并在每个子图中显示图例。本文将详细介绍如何在Python的matplotlib库中为所有子图显示标签legend,包括理论概述和详细的代码示例。

一、理论概述

1.图例(Legend)的作用

  • 图例用来解释绘图中各种元素的符号,帮助观众理解每种线条、颜色或符号代表的数据。例如,在一个折线图中,通过图例可以清晰地了解到每一条线代表的是哪个数据集。

2.matplotlib中的legend函数

  • matplotlib.pyplot.legend(*args, **kwargs):用于创建图例。
  • loc参数:设置图例的位置,如'upper right''lower left'等。
  • fontsize参数:设置图例的字体大小。
  • frameon参数:设置是否显示图例边框。
  • edgecolorfacecolor参数:分别设置图例边框和背景的颜色。
  • title参数:设置图例的标题。

3.在多个子图中显示图例

  • 使用plt.subplots()方法创建包含多个子图的图表。
  • 每个子图可以单独调用legend()方法显示图例。
  • 也可以使用fig.legend()方法在整个图形上方添加一个全局图例。

二、代码示例

以下是一个详细的代码示例,展示了如何在多个子图中显示图例。

import matplotlib.pyplot as plt
import numpy as np
 
# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
 
# 创建包含两个子图的图表
fig, axs = plt.subplots(2)
 
# 在第一个子图中绘制 sin(x)
axs[0].plot(x, y1, label='sin(x)', color='blue')
axs[0].set_title('Sine Function')
axs[0].legend()  # 添加图例
 
# 在第二个子图中绘制 cos(x)
axs[1].plot(x, y2, label='cos(x)', color='orange')
axs[1].set_title('Cosine Function')
axs[1].legend()  # 添加图例
 
# 调整布局
plt.tight_layout()
plt.show()

在上述代码中,我们创建了一个包含两个子图的图表,每个子图都有自己的图例。通过label参数为每个数据系列指定标签,并在每个子图中调用legend()方法显示图例。

三、全局图例的显示

如果你想在整个图形上方添加一个全局图例,可以使用fig.legend()方法。以下是一个示例:

import matplotlib.pyplot as plt
import numpy as np
 
# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
 
# 创建包含两个子图的图表
fig, axs = plt.subplots(2)
 
# 在第一个子图中绘制 sin(x)
axs[0].plot(x, y1, label='sin(x)', color='blue')
axs[0].set_title('Sine Function')
 
# 在第二个子图中绘制 cos(x)
axs[1].plot(x, y2, label='cos(x)', color='orange')
axs[1].set_title('Cosine Function')
 
# 在整体图中添加图例
fig.legend(loc='upper center', ncol=2)
 
# 调整布局
plt.tight_layout()
plt.show()

在这个示例中,我们使用fig.legend()方法在整个图形上方添加了一个全局图例,并且设置了图例的位置为'upper center',列数为2。这样不仅保持了每个子图的独立性,同时也避免了重复内容。

四、图例的样式调整

除了设置图例的位置,还可以调整图例的样式,如字体大小、边框和背景颜色等。以下是一个示例:

import matplotlib.pyplot as plt
import numpy as np
 
# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
 
# 创建包含两个子图的图表
fig, axs = plt.subplots(2)
 
# 在第一个子图中绘制 sin(x)
axs[0].plot(x, y1, label='sin(x)', color='blue')
axs[0].set_title('Sine Function')
 
# 设置图例样式
legend = axs[0].legend(loc='upper left', fontsize='x-large', frameon=False, edgecolor='blue', facecolor='lightgray')
 
# 在第二个子图中绘制 cos(x)
axs[1].plot(x, y2, label='cos(x)', color='orange')
axs[1].set_title('Cosine Function')
 
# 设置第二个子图的图例样式
legend2 = axs[1].legend(loc='upper right', fontsize='medium', frameon=True, edgecolor='red', facecolor='white')
 
# 调整布局
plt.tight_layout()
plt.show()

在这个示例中,我们分别为两个子图设置了不同的图例样式。第一个子图的图例没有边框,背景颜色为浅灰色,字体大小为x-large,边缘颜色为蓝色。第二个子图的图例有边框,背景颜色为白色,字体大小为medium,边缘颜色为红色。

五、图例位置的调整

有时候,我们可能需要将图例放置在图表之外的位置,这时可以使用bbox_to_anchor参数。以下是一个示例:

import matplotlib.pyplot as plt
import numpy as np
 
# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
 
# 创建包含两个子图的图表
fig, axs = plt.subplots(2)
 
# 在第一个子图中绘制 sin(x)
axs[0].plot(x, y1, label='sin(x)', color='blue')
axs[0].set_title('Sine Function')
 
# 获取当前子图的位置
box = axs[0].get_position()
# 调整子图位置,为图例留出空间
axs[0].set_position([box.x0, box.y0, box.width, box.height * 0.8])
 
# 在图表外部添加图例
axs[0].legend(loc='center', bbox_to_anchor=(0.5, 1.2), ncol=2)
 
# 在第二个子图中绘制 cos(x)
axs[1].plot(x, y2, label='cos(x)', color='orange')
axs[1].set_title('Cosine Function')
 
# 调整布局
plt.tight_layout()
plt.show()

在这个示例中,我们首先获取了第一个子图的位置,然后调整了子图的高度,为图例留出空间。接着,使用bbox_to_anchor参数将图例放置在图表外部的中心位置。

六、结论

在数据可视化中,合理使用图例可以极大提升图表的可读性。在Python中,利用matplotlib创建的子图可以很容易地添加图例,无论是为每个子图单独添加,还是统一在一起。本文详细介绍了如何在多个子图中显示图例,包括全局图例的显示、图例样式的调整和图例位置的调整等。通过这些方法,你可以更灵活地创建具有丰富信息的图表,帮助观众更好地理解数据。

标签:axs,plt,Python,子图,legend,图例,np,Legend
From: https://www.cnblogs.com/TS86/p/18619998

相关文章

  • Python中的数据序列(列表,元组,字典,集合)
    目录列表 语法特点 列表的操作方式查操作增操作改操作删操作元组语法运用场景元组的操作字典语法 字典的操作方式增操作删操作 改操作查操作字典的遍历操作集合语法集合的操作方式增操作删操作 查操作 数据序列之间的转换 列表 语法......
  • 使用Python实现两组数据纵向排序
    使用Python实现两组数据纵向排序 本文详细介绍了如何使用Python实现两组数据的纵向排序,包括开发思想、开发流程和代码示例。通过本文的学习,读者可以掌握如何使用Python的内置函数和第三方库进行排序操作,并能够处理各种边界情况。本文提供的代码示例具有实际应用价值,可以用于......
  • python毕设基于架构的信息发布系统管理和运维的实现ahh5z程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的迅猛发展,信息传播已成为企业运营中不可或缺的一部分。无论是大型企业还是初创公司,都需要一个高效、稳定的信息发布系统来宣......
  • python毕设基于学生学情管理系统的设计与实现a5ezy程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着教育信息化的不断深入,学生学情管理成为高校教育管理工作中的重要一环。传统的学生学情管理方式往往依赖于纸质记录、人工统计,不仅效率......
  • Python 二分查找
    作者制作不易,关注、点赞、收藏一下吧!1.二分查找的概念和基本步骤二分查找是一种高效的搜索算法,适用于在一个有序数组中查找特定元素。其基本思想是每次将搜索范围缩小一半,从而快速定位目标元素。二分查找要求输入数组必须是有序的。时间复杂度为O(logn)。初始化:设定两......
  • 基于Python+Vue开发的酒店客房预订管理系统,大四期末作业,实习作品
    项目简介该项目是基于Python+Vue开发的酒店客房预订管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的酒店客房预订管理系统项目,大学生可以在实践中学......
  • 基于Python+Vue开发的口腔牙科预约管理系统 期末作业
    项目简介该项目是基于Python+Vue开发的口腔牙科预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的口腔牙科诊所预约管理系统项目,大学生可以在实践......
  • 萝卜大杂烩 | 我常用几个实用的Python爬虫库,收藏~
    本文来源公众号“萝卜大杂烩”,仅用于学术分享,侵权删,干货满满。原文链接:我常用几个实用的Python爬虫库,收藏~Python中有非常多用于网络数据采集的库,功能非常强大,有的用于抓取网页,有的用于解析网页,这里介绍6个最常用的库。1.BeautifulSoupBeautifulSoup是最常用的Python网页......
  • python | 一文看懂Python闭包机制与变量作用域规则
    本文来源公众号“python”,仅用于学术分享,侵权删,干货满满。原文链接:一文看懂Python闭包机制与变量作用域规则在Python编程中,闭包和变量作用域是两个重要的概念。闭包(Closure)是一种函数对象,它能够记住并捕获创建时的环境变量,因此即使在函数调用结束后,闭包也能访问这些变量。闭......
  • Python网络爬虫技术详解与实战案例
    Python网络爬虫技术详解与实战案例引言网络爬虫(WebCrawler)是一种自动化程序,用于在互联网上收集数据。通过向网页发送HTTP请求,获取网页数据,然后提取和分析网页内容,网络爬虫能够实现数据收集、信息提取和数据分析等多种应用场景。Python作为一种功能强大且易于学习的编程语......