当前位置: 首页 > news >正文

Python中所有子图标签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创建的子图可以很容易地添加图例,无论是为每个子图单独添加,还是统一在一起。本文详细介绍了如何在多个子图中显示图例,包括全局图例的显示、图例样式的调整和图例位置的调整等。通过这些方法,你可以更灵活地创建具有丰富信息的图表,帮助观众更好地理解数据。

相关文章:

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

在数据可视化中,图例(legend)是一个非常重要的元素,它能够帮助读者理解图表中不同元素的含义。特别是在使用Python进行可视化时,matplotlib库是一个非常强大的工具,能够轻松创建包含多个子图的图表&#xf…...

python脚本中使用git命令

python脚本中使用git命令 一、背景 在做项目输入文件的版本管理的时候,我发现我需要用到库上面的文件来作为版本管理比较的输入,通常情况下,我是先根据tag将两个版本的文件拉取到本地,然后放进我的工程里在运行脚本来完成版本的比较,但是我发现这样其实很麻烦,所以就想着…...

本地maven项目打包部署到maven远程私库

目的:在自己的maven项目中,要把当前maven项目部署到maven私库,供其他人引入依赖使用。 首先要确保你当前能访问到你的私库,能拉私库的maven依赖即可。 maven部署命令: mvn deploy:deploy-file -Dmaven.test.skiptrue -…...

自己搭建专属AI:Llama大模型私有化部署

前言 AI新时代,提高了生产力且能帮助用户快速解答问题,现在用的比较多的是Openai、Claude,为了保证个人隐私数据,所以尝试本地(Mac M3)搭建Llama模型进行沟通。 Gpt4all 安装比较简单,根据 G…...

[免费]SpringBoot公司财务管理系统【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的SpringBoot公司财务管理系统,分享下哈。 项目视频演示 【免费】SpringBoot公司财务管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 现代经济快节奏发展以及不断完善升级的信息化技术&…...

5G 模组 RG500Q常用AT命令

5G 模组 RG500Q常用AT命令 5G 模组 RG500Q常用AT命令 at ATQNWPREFCFG\"mode_pref\",nr5g && sleep 1 at ATQNWPREFCFG\"nr5g_band\",79 && sleep 1 at atqnwlock\"commo…...

【YOLO 项目实战】(11)YOLO8 数据集与模型训练

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【YOLO 项目实战】(1)YOLO5 环境配置与检测 【YOLO 项目实战】(10)YOLO8 环境配置与推理检测 【YOLO 项目实战】(11)YOLO8 数据…...

基于matlab的单目相机标定

链接: 单目相机标定(使用Matlab) 用Matlab对单目相机参数的标定步骤(保姆级教程) 1.准备代码 调用摄像头代码(用于测试摄像头是否可用): #https://blog.csdn.net/qq_37759113/art…...

DB-GPT 智谱在线模型配置

LLM_MODELzhipu_proxyllm PROXY_SERVER_URLhttps://open.bigmodel.cn/api/paas/v4/chat/completions ZHIPU_MODEL_VERSIONglm-4 ZHIPU_PROXY_API_KEY70e8ec7113882ff5478fcecaa47522479.ExY2LyjcvWmqrTAf...

Navicat 17 功能简介 | SQL 美化

SQL美化 本期,我们将深入挖掘 Navicat 的实用的SQL代码美化功能。你只需简单地点击“SQL 美化”按钮,即可轻松完成 SQL 的格式化。 随着 17 版本的发布,Navicat 也带来了众多的新特性,包括兼容更多数据库、全新的模型设计、可视化…...

RTA_OS内核源码解析 3.9-任务激活

RTA_OS内核源码解析 3.9-任务激活 文章目录 RTA_OS内核源码解析 3.9-任务激活一、激活简介二、同步激活2.1 中断管理2.2 异常条件判断2.3 激活Task2.4 任务调度2.4.1 Os_RaiseCrossCoreISR2.4.2 Os_CrossCoreISR三、异步激活3.1 异常条件判断3.2 激活Task一、激活简介 一般将T…...

新能源汽车充电需求攀升,智慧移动充电服务有哪些实际应用场景?

在新能源汽车行业迅猛发展的今天,智慧充电桩作为支持这一变革的关键基础设施,正在多个实际应用场景中发挥着重要作用。从公共停车场到高速公路服务区,从企业园区到住宅小区,智慧充电桩不仅提供了便捷的充电服务,还通过…...

计算机的错误计算(一百八十六)

摘要 就上节(即(一百八十五))内容,有读者来信,建议用另外一个大模型计算。本节详细讲解该大模型的对错,特别是涉及 Python Decimal的内容以及泰勒展式内容。 例1. 已知 用大模型计算 下面是…...

当我用影刀AI Power做了一个旅游攻略小助手

在线体验地址:旅游攻略小助手https://power.yingdao.com/assistant/ca1dfe1c-9451-450e-a5f1-d270e938a3ad/share 运行效果图展示: 话不多说一起看下效果图: 智能体的截图: 工作流截图: 搭建逻辑: 其实这…...

首批|云轴科技ZStack成为开放智算产业联盟首批会员单位

近日 ,在Linux基金会AI & Data及中国开源软件推进联盟的指导之下,开放智算产业联盟成立大会在北京成功召开。在大会上,联盟首次公布了组织架构并颁发了首批会员单位证书。凭借ZStack AIOS平台智塔和在智算领域的技术创新,云轴…...

MMO之AOI

这章来说下AOI算法,常用的有九宫格,灯塔(九宫格优化版),四叉树,十字链表/三轴链表(加跳跃表) 写这章主要为了以后温故 方便 1: 一般AOI 的基本接口如下 enter:对象进入地图; leave:对象离开地图…...

linux---多线程

线程的基本概念 定义:在Linux中,线程是进程内部的一个执行单元,是进程的一个实体,它是CPU调度和分派的基本单位。一个进程可以包含多个线程,这些线程共享进程的资源,如代码段、数据段、打开的文件、信号处理…...

【JavaEE初阶】线程 和 thread

本节⽬标 认识多线程 掌握多线程程序的编写 掌握多线程的状态 一. 认识线程(Thread) 1概念 1) 线程是什么 ⼀个线程就是⼀个 "执⾏流". 每个线程之间都可以按照顺序执⾏⾃⼰的代码. 多个线程之间 "同时" 执⾏着多份代码. 还…...

如何规避eBay账号被封的风险?原因与对策

​ebay是全球知名的跨境电商平台之一,吸引了不少的商家入驻。然而随着平台规则的不断更新和完善,很多ebay商家在运营的过程中,会遇到账号被封禁的问题。那ebay账号被封的原因有哪些?本文将带来详细的分析,帮助商家保护…...

Word使用分隔符实现页面部分分栏

文章目录 Word使用分隔符实现页面部分分栏分隔符使用页面设置 Word使用分隔符实现页面部分分栏 分隔符使用 word中的分隔符: 前面不分栏,后面分栏(或前面分栏,后面不分栏),只需要在分隔位置处插入分隔符:“连续”即…...

LLM基础1_语言模型如何处理文本

基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 &#xff0c;这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器&#xff0c;右键点击 .uproject 文件&#xff0c;选择 "Generate Visual Studio project files"&#xff0c;重…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用&#xff08;Math::max&#xff09; 2 函数接口…...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...

大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程

基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…...