【matplotlib】可视化解决方案——如何正确设置图例

news2025/1/11 10:09:48

概述

matplotlib 中的图例(Legend)可以帮助我们展示每个数据对应的名称,让图像阅读者更好的认识到图像的数据结构以及绘图者想表达的意思。matplotlib 可以为每一个可见绘图对象(Artist)添加图例,官方建议调用 pyplot.legend() 方法便捷地创建图例,而不是使用面向对象的方法,即显式创建 matplotlib.legend.Legend 对象构造图例。

一般情况下一个图例包含多个图例条目,每个图例条目包含:

  • 图例键:每个图例标签左侧的彩色/带图案标记;
  • 图例标签:描述由图例键表示的句柄的文本;

每一个图例条目会和一个图例句柄绑定,每一个图例句柄用于在图例中生成适当条目的原始对象。

我们在实际绘图中常调用 pyplot.legend() 方法完成绘图,该方法的签名为 :

legend()
legend(handles, labels)
legend(handles=handles)
legend(labels)

方式 1:不传递任何参数

第一种方式调用方法时不传递任何额外参数, matplotlib 会自动确定要添加到图例中的元素,这种情况下,所有的图例标签来自 Artist 对象,这就需要显式的指明每一个Artist 对象的图例标签,如果没有显式指定,那么 matplotlib 不会绘制任何图例,并会给出提示 No artists with labels found to put in legend. 。正确形式为:

plt.plot([1, 2, 3], label='Inline label')
plt.legend()

方式 2:传递图例句柄和图例标签

第二种方式可以完全控制每一个 Artist 对象以及其显示的图例信息,该方式需要传递一个可迭代 Artist 对象容器和一个可迭代图例标签对象容器,例如 plt.legend([line1, line2, line3], ['label1', 'label2', 'label3'])

方式 3:仅传递图例句柄

第三种方式和第二种方式类似,但是更加便捷,同时可以控制哪些 Artist 对象需要显示图例,此时图例标签来自 Artist 对象本身,例如:

line1, = plt.plot([1, 2, 3], label='label1')
line2, = plt.plot([1, 2, 3], label='label2')
plt.legend(handles=[line1, line2])

方式 4:仅传递图例标签

第四种方式仅传递图例标签,这种方式官方是不推荐的,因为这可能导致图例句柄和图例标签之间的不匹配,所以在此不再赘述,如果想要了解具体信息,可以访问官网。

关键参数

除了上述必要参数之外,还可以传递如下参数:

  • loc:指定图例显示的位置,默认使用最佳位置显示图例;
  • ncol:指定图例显示的列数,默认 1;
  • prop:指定图例字体属性;
  • fontsize:指定图例字体大小;
  • labelcolor:指定图例标签颜色;
  • frameon:指定图例区域是否有边框;
  • fancybox:指定图例区域矩形是否为圆角;
  • title:指定图例标题;
  • title_fontsize:指定图例标题字体大小;
  • shadow:指定图例区域是否有阴影;
  • facecolor:指定图例区域背景颜色;
  • edgecolor:指定图例区域边缘颜色;
  • labelspacing:指定图例条目之间的垂直间距;
  • markerscale:指定图例标签中标记点的缩放比例;

案例

接下来,我们将绘制一个余弦函数作为案例。子图 1使用方式 1 绘制图例,子图 2 使用方式 2 绘制图例,二者都设置图例标题。案例完整代码如下:

import matplotlib.pyplot as plt  
import numpy as np  
  
plt.rcParams["font.sans-serif"] = ["SimHei"]  
plt.rcParams["axes.unicode_minus"] = False  
  
x = np.linspace(0, 2 * np.pi, 1000)  
y = np.cos(x)  
  
fig, ax = plt.subplots(1, 2)  
# 方式1  
ax[0].plot(x, y, label='余弦函数', color='cornflowerblue')  
ax[0].legend(title='方式1', title_fontsize=15)  
  
# 方式2  
line_obj = ax[1].plot(x, y, color='goldenrod')  
ax[1].legend(handles=line_obj, labels=['余弦函数'], title='方式2', title_fontsize=15)  
  
plt.show()

画图结果如下:

在这里插入图片描述

往期回顾

可视化解决方案

  1. 【matplotlib】可视化解决方案——如何正确设置轴长度和范围
  2. 【matplotlib】可视化解决方案——如何正确理解pyplot和OO-API
  3. 【matplotlib】可视化解决方案——如何正确展示和保存图像
  4. 【matplotlib】可视化解决方案——如何设置字符串的输出字体效果
  5. 【matplotlib】可视化解决方案——如何正确使用颜色映射表
  6. 【matplotlib】可视化解决方案——如何调整轴脊位置
  7. 【matplotlib】可视化解决方案——如何设置坐标系计量方法
  8. 【matplotlib】可视化解决方案——如何正确使用文本注释
  9. 【matplotlib】可视化解决方案——如何调整计量单位和计量方法
  10. 【matplotlib】可视化解决方案——如何实现图形的动画效果

文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,相关的知识点也可进行分享,希望大家都能有所收获!!如果觉得我的文章写得还行,不妨支持一下。你的每一个转发、关注、点赞、评论都是对我最大的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/482525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows10系统如何实现telnet内网穿透

在windows10系统环境中,我们常用的内网穿透方案是远程桌面内网穿透技术方案,存在的弊端是它属于视窗类操作工具。网上很多教人开启windows10的telnet服务的帖子,凡是通过系统设置进入启用或关闭windows应用后勾选telnet客户端这种方式&#x…

ChatGPT实现服务器体验沙箱

服务器体验沙箱 IT 人员在学习一门新技术时,第一个入门门槛通常都是"如何在本地安装并成功运行"。因此,很多技术的官网都会通过沙箱技术,提供在线试用的 playground 或者按步模拟的 tour。让爱好者先在线尝试效果是否满足预期&…

如何评估现代处理器的性能——以ARM Cortex-A53为例

如何评估现代处理器的性能——以ARM Cortex-A53为例 1 有哪些通用评价指标? 现代处理器内核的性能可以从以下几个方面进行评估: 时钟速度(Clock Speed):它是CPU内部时钟发生器的频率,以赫兹(…

IDEA2022版教程下()

8.快捷键的使用 8.1 常用快捷键 见《 尚硅谷_宋红康_IntelliJ IDEA 常用快捷键一览表.md 》 8.2 查看快捷键 1、已知快捷键操作名,未知快捷键 2、已知快捷键,不知道对应的操作名 8.3 自定义快捷键 8.4 使用其它平台快捷键 苹果电脑或者是用惯Eclips…

改进YOLOv5: | 涨点神器 | 即插即用| ICLR 2022!Intel提出ODConv:即插即用的动态卷积

OMNI-DIMENSIONAL DYNAMIC CONVOLUTION ODConv实验核心代码ODConv代码yaml文件运行:论文链接: https://openreview.net/forum?id=DmpCfq6Mg39 本文介绍了一篇动态卷积的工作:ODConv,其通过并行策略采用多维注意力机制沿核空间的四个维度学习互补性注意力。作为一种“即插…

Java8流式操作——中间操作

文章目录 什么是中间操作?方法实践说明一、前提条件Person类Data类 二、操作filter:过滤distinct:去重(去除集合中重复的元素)sorted:排序①、sorted():无参构造②、sorted(Compartor compartor):有参构造 skip:跳过。从前往后数&…

【Python入门篇】Python开发环境的搭建——安装和配置PyCharm工具

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选择循环语句…

闲谈【Stable-Diffusion WEBUI】的插件:绘图过程动画输出

文章目录 (零)前言(一)过程动画输出(Steps Animation)(1.1)使用(1.2)成果 (零)前言 本篇主要提到WEBUI的过程动画输出插件&#xff0c…

Docker 持久化存储 Volumes

Docker 持久化存储 Volumes 简介如何选择 -v 和 --mount-v或--volume--mount 创建和管理卷启动带有卷的容器使用Docker Compose的卷使用卷启动服务使用只读卷备份、恢复或迁移数据卷备份卷 删除卷自动删除匿名卷删除所有未使用卷 简介 官方文档: https://docs.docker.com/stor…

Python JS逆向篇(四)

Python JS逆向篇(四) 找到参数加密位置跟进window.asrsea函数结果扣取的js代码扩展 逆向主题:某易云评论数据,请求时的加密参数。 (注:文章所涉及内容只做学习参考交流,不做除此之外的任何其它用…

正则表达式基础一

BRE(basic regular expression):匹配数据流中的文本字符 普通文本匹配 特殊字符 正则表达式存在一些特殊字符,如需当成普通文本来匹配,必须加上转义,即反斜杠\,如下所示 .*[]^${}?|() 指定出现位置的字符 ^ 指定行首…

Python两三行代码轻松批量添加~防韩还是很有必要的~

人生苦短,我用python 一直想做一个这种系列的但是因为七七八八的事情总是忘记, 今天正好有空,来开整一下~ 首先, 天冷防韩是什么梗? 【天冷防韩】 “天冷防韩”是“天冷防寒”的谐音, 不过“寒”指的…

编程工具集-我的JavaScript/TypeScript/NodeJS实用工具模块

JavaScript/TypeScript编程工具集 JavaScript/TypeScript/NodeJS实用工具模块 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 邮箱 :291148484163.com 本文地址:https…

【微服务 | 学成在线】项目易错重难点分析(媒资管理模块篇·上)

文章目录 模块整体认识架构问题分析nacos配置管理搭建nacos公用配置配置优先级网关搭建 分布式文件系统什么是分布式文件系统MinIO数据恢复测试SDK 上传图片http请求头中的content-typeRequestPart接口分析Service层的优化 上传视频断点续传技术java代码模拟分块与合并上传视频…

BFD场景作用及缺省配置

一、BFD缺省配置 表:BFD参数缺省值 二、BFD场景作用 表:BFD场景作用 三、BFD配置缺省参数汇总 1)配置BFD单跳检测 图:BFD单跳检测配置流程图 执行命令bfd,使能全局BFD功能并进入BFD视图。缺省情况下,全…

30天、2000公里、400亿,“长沙国际工程机械展”竖起世界展会新地标

文|智能相对论 作者|佘凯文 2021年4月的一天,一台重达120吨的日立建机超大型液压挖掘机在日本的某港口装载完成,或许绝大多人对120吨没有概念,给大家解释下,一吨等于2000斤,120吨就是240000斤。金箍棒知道吧&#xf…

RocketMQ学习1

1、RocketMQ快速入门 RocketMQ是阿里巴巴2016年MQ中间件,使用Java语言开发,在阿里内部,RocketMQ承接了例如“双11”等高并发场景的消息流转,能够处理万亿级别的消息。 1.1 准备工作 1.1.1 下载RocketMQ RocketMQ最新版本&#xff…

【垃圾回收器】基于Go实现引用计数法(ReferenceCount)

不想传火的,可以点击下面的链接! github:GCByGO 给我点赞嘛,球球了! What This? 现象 引用计数法是一种垃圾回收算法,用于跟踪对象被引用的次数。在该算法中,每个对象都会维护一个计数器&#xff0c…

PyTorch:深度学习框架的优雅演进与设计理念

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

【Linux】文件与路径

一、Linux相关软件 xftp:用来传文件 xshell:用来敲命令 二、Linux的文件结构 windows系统下设有盘符:如C盘、D盘等,Linux没有盘符的概念,只有一个根目录/,所有文件都在它下面。 在根目录下输入命令ls&am…