【python】深入探索使用Matplotlib中的plt.legend()添加图例

当我们绘制复杂的图表,尤其是包含多个数据系列的图表时,一个清晰、易读的图例是至关重要的。plt.legend()函数是Matplotlib库中用于添加和定制图例的关键工具。在本篇博文中,我们将深入探讨plt.legend()的功能、用法以及如何通过它提升图表的可读性和美观度。

1.plt.legend()的基本用法

首先,我们需要了解plt.legend()的基本用法。通常,在绘制完图表的数据系列后,我们可以简单地调用plt.legend()来自动创建一个图例。例如:

# -*- coding: utf-8 -*-
"""
Created on Mon Feb 19 13:33:58 2024@author: zqq
"""import matplotlib.pyplot as plt  
import numpy as np  x = np.linspace(0, 10, 100)  
y1 = np.sin(x)  
y2 = np.cos(x)  plt.rcParams['axes.unicode_minus']=False  # 显示负号plt.plot(x, y1, label='sin(x)')  
plt.plot(x, y2, label='cos(x)')  plt.legend()  
plt.show()

在这个例子中,label参数用于为数据系列指定标签,这些标签随后被plt.legend()用来创建图例。

这段代码在Spyder编辑器中如下:

在这里插入图片描述
运行代码,得到下面的图表:

在这里插入图片描述
可以看到图例(蓝色实线sin(x)、橙色实线cos(x))在左下角,我们可以通过设置超参数指定该图例的位置。plt.rcParams[‘axes.unicode_minus’]=False # 显示负号,这段代码表示正常显示负号。

使用方法:

plt.legend(loc='xxx')

xxx的取值为:

  • ‘best’(默认值):自动选择最佳位置。
  • ‘upper right’:右上角。
  • ‘upper left’:左上角。
  • ‘lower right’:右下角。
  • ‘lower left’:左下角。
  • ‘right’:右侧。
  • ‘center left’:左侧中央。
  • ‘center right’:右侧中央。
  • ‘lower center’:底部中央。
  • ‘upper center’:顶部中央。

2.plt.legend()的示例

# -*- coding: utf-8 -*-
"""
Created on Mon Feb 19 11:21:04 2024@author: zqq
"""import matplotlib.pyplot as plt
from matplotlib import pyplot as plt# 示例数据
x = [1, 2, 3, 4, 5, 6, 7]
y1 = [9, 12, 18, 20, 15, 17, 27]
y2 = [8, 12, 9, 14, 11, 15, 16]
y3 = [12, 14, 10, 12, 16, 18, 20]
y4 = [11, 19, 6, 15, 14, 16, 23]# 绘制数据,并添加标签
plt.plot(x, y1, label='数据系列1')
plt.plot(x, y2, label='数据系列2')
plt.plot(x, y3, label='数据系列3')
plt.plot(x, y4, label='数据系列4')plt.rcParams['font.sans-serif']=['simHei']  # 中文显示# 添加图例
plt.legend(loc='lower right')# 显示图表
plt.show()

plt.rcParams[‘font.sans-serif’]=[‘simHei’] # 中文显示,这段代码表示正常显示中文。

plt.legend(loc=‘lower right’),显示在右下角:

在这里插入图片描述

plt.legend(loc=‘upper left’),显示在左上角:

# -*- coding: utf-8 -*-
"""
Created on Mon Feb 19 11:21:04 2024@author: zqq
"""import matplotlib.pyplot as plt
from matplotlib import pyplot as plt# 示例数据
x = [1, 2, 3, 4, 5, 6, 7]
y1 = [9, 12, 18, 20, 15, 17, 27]
y2 = [8, 12, 9, 14, 11, 15, 16]
y3 = [12, 14, 10, 12, 16, 18, 20]
y4 = [11, 19, 6, 15, 14, 16, 23]# 绘制数据,并添加标签
plt.plot(x, y1, label='数据系列1')
plt.plot(x, y2, label='数据系列2')
plt.plot(x, y3, label='数据系列3')
plt.plot(x, y4, label='数据系列4')plt.rcParams['font.sans-serif']=['simHei']  # 中文显示# 添加图例
plt.legend(loc='upper left')# 显示图表
plt.show()

在这里插入图片描述

plt.legend(),默认参数,显示在最佳位置:

# -*- coding: utf-8 -*-
"""
Created on Mon Feb 19 11:21:04 2024@author: zqq
"""import matplotlib.pyplot as plt
from matplotlib import pyplot as plt# 示例数据
x = [1, 2, 3, 4, 5, 6, 7]
y1 = [9, 12, 18, 20, 15, 17, 27]
y2 = [8, 12, 9, 14, 11, 15, 16]
y3 = [12, 14, 10, 12, 16, 18, 20]
y4 = [11, 19, 6, 15, 14, 16, 23]# 绘制数据,并添加标签
plt.plot(x, y1, label='数据系列1')
plt.plot(x, y2, label='数据系列2')
plt.plot(x, y3, label='数据系列3')
plt.plot(x, y4, label='数据系列4')plt.rcParams['font.sans-serif']=['simHei']  # 中文显示# 添加图例
plt.legend()# 显示图表
plt.show()

在这里插入图片描述

图例不仅是数据系列的标识,它也是图表整体设计的一部分。合适的图例位置、大小和样式可以极大地提高图表的可读性和吸引力。在设计图表时,考虑图例与其他图表元素(如标题、轴标签、刻度等)的协调性和一致性非常重要。plt.legend()是Matplotlib中不可或缺的一个函数,它使得我们能够轻松地为图表添加清晰、美观的图例。通过了解其基本用法和定制选项,你可以创建出既信息丰富又视觉上吸引人的图表。不断实践和探索,你将发现plt.legend()为你的数据可视化工作带来的无限可能。

这是2024年的第一篇博文,本来想写更好的内容,但是工作是越来越卷了,根本没有时间撰写更优质的博文,已经断更挺长时间了。借着今天修改代码中的图例,挤出时间写成文章,实属不易,干货不多,还望各位海涵。后面将继续更新专栏文章,回馈广大粉丝朋友。

好了,今天的学习就到这里,让我们下期再见。

参考:
https://blog.csdn.net/weixin_74850661/article/details/132949071

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

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

相关文章

ChatGLM3:打造更智能、更安全的代码解释器和工具使用体验

ChatGLM3 是由智谱AI训练的第三代大型语言模型,它不仅能理解和生成人类语言,还能执行代码、调用工具,并以 markdown 格式进行响应。为了提高用户体验,同时避免用户输入的注入攻击,ChatGLM3 采用了全新的对话格式。下载…

Qt的基本操作

文章目录 1. Qt Hello World 程序1.1 通过图形化界面的方式1.2 通过代码的方式实现 2. Qt 的编码问题3. 使用输入框实现hello world4. 使用按钮实现hello world5. Qt 编程注意事项6. 查询文档的方式7. 认识Qt坐标系 1. Qt Hello World 程序 1.1 通过图形化界面的方式 我们先讲…

Vue3中 状态管理器 ( Pinia ) 详解及使用

传送门: Vue中 状态管理器(vuex)详解及应用场景 传送门:Pinia 中文文档 注意:本文项目使用脚手架为 Vite; 1. 前言 Pinia 对比 Vuex Pinia 同时支持 Vue2 以及 Vue3 ,这让同时使用两个版本的…

现货白银投资热度推升因子

白银作为一种贵金属,其投资价值会受到多种因素的影响。在一些特殊的情况下,现货白银作为具有高杠杆的白银替代投资方式,会成为热门的投资工具,大受市场的追捧,本文将为大家介绍一下相关情况。 通常当全球的经济面临不确…

【Linux】进程间通信——共享内存

文章目录 共享内存的概要创建共享内存shmget()参数keyshmget()参数sizeshmget()参数shmflg 删除共享内存挂载共享内存去关联 共享内存的概要 共享内存允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间传递数据的一种非常有效的方式。不同进程之间…

【ArcGIS Pro二次开发】(81):玩个花活_控规指标块生成

一、要实现的效果 废话不多说,这次要实现的是类似控规指标块的标注: 这里只是示例,用了5个格子,做成9个格子也是可以的。 实现这个效果最关键的是要用到Pro中的复合标注。 关于复合标注的用法可以搜一下帮助里的【使用复合注释…

【区块链技术开发语言】在ubuntu18 系统环境下命令操作安装GO语言开发环境

要在Ubuntu 18系统上安装GO语言开发环境,您可以按照以下步骤进行: 打开终端(Ctrl + Alt + T)。 使用以下命令下载GO语言安装包: 或者手动打开链接下载: wget https://golang.org/dl/go1.17.5.linux-amd64.tar.gz确保替换链接中的版本号为最新版本。 解压下载的安装包…

yolov8源码解读Detect层

yolov8源码解读Detect层 Detect层解读网络各层解读及detect层后的处理 关于网络的backbone,head,以及detect层后处理,可以参考文章结尾博主的文章。 Detect层解读 先贴一下全部代码,下面一一解读。 class Detect(nn.Module):"""YOLOv8 …

【EndNote20】Endnote20和word的一些操作

文章目录 前言一、如何导入参考文献到EndNote201.1.在谷歌学术或知网上下载文献1.2.将下载好的文件导入EndNote20(可批量导入)1.3.书籍如何导入 二、Word中加入参考文献 前言 做毕设时学习了EndNote20的一些使用方法,并在此慢慢做汇总。 一、如何导入参考文献到End…

【python】python入门之输入与进入交互模式的方法

目录 一次性输入(进入交互模式): 输入函数: 一次性输入(进入交互模式): 交互模式介绍:写一行读一行,不用print也可以显示出来 (当进行某些一次性计算或者纠错…

在石家庄有哪家券商证券公司可以免费开量化软件Ptrade、QMT

在石家庄有少数证券公司可以免费开量化软件QMT、Ptrade,如国金证券、广发证券等,之前要100万才可开通,现在只需满足资金50万的条件即可免费办理使用,详情找客户经理孙经理咨询。 证券佣金低价标准是“成本价”,默认佣金…

多线程——

目录 一、为什么要有多线程? 1、线程与进程 2、多线程的应用场景 3、小结​编辑 二、多线程中的两个概念(并发和并行) 1、并发 2、并行 3、小结 三、多线程的三种实现方式 1、继承Thread类的方式进行实现 2、实现Runnable接口的方…

为什么有的代理IP速度比较慢?

“为什么有的IP代理速度比较慢?”随着数字化时代的不断发展,代理服务成为了许多网络操作的关键环节。然而,有时我们可能会遇到IP代理速度慢的问题,这可能会对我们的网络操作产生影响。让我们一起揭开这个谜团,探寻其中…

EMQX Enterprise 5.4 发布:OpenTelemetry 分布式追踪、OCPP 网关、Confluent 集成支持

EMQX Enterprise 5.4.0 版本已正式发布! 新版本提供 OpenTelemetry 分布式追踪与日志集成功能,新增了开放充电协议 OCPP 协议接入能力,并为数据集成添加了 Confluent 支持。此外,新版本还进行了多项改进以及 BUG 修复&#xff0c…

AI提示工程实战:从零开始利用提示工程学习应用大语言模型【文末送书-19】

文章目录 背景什么是提示工程?从零开始:准备工作设计提示调用大语言模型 实际应用示例文字创作助手代码生成持续优化与迭代数据隐私与安全性可解释性与透明度总结 AI提示工程实战:从零开始利用提示工程学习应用大语言模型【文末送书-19】⛳粉…

SpringMVC 的参数绑定之list集合、Map

标签中name属性的值就是pojo类的属性名 参数绑定4 list [对象] <form action"teaupd.do" method"post"> <c:forEach items"${list}" var"tea" varStatus "status"> 教师编号&#xff1a;<input…

希尔排序算法

目录 ShellSort希尔排序 整体思路 图解分析 【1】预排序 单组排序 多组并排 【2】直接插入排序 关于gap取值 总代码实现 时间复杂度 ShellSort希尔排序 希尔排序法又称缩小增量法。 希尔排序法的基本思想是&#xff1a;先选定一个整数&#xff0c;把待排序文件中所有…

Vue3快速上手(七) ref和reactive对比

一、ref和reactive对比 表格形式更加直观吧&#xff1a; 项目refreactive是否支持基本类型支持不支持是否支持对象类型支持支持对象类型是否支持属性直接赋值不支持&#xff0c;需要.value支持是否支持直接重新分配对象支持&#xff0c;因为操作的.value不支持&#xff0c;需…

120 Linux C++ 通讯架构实战 nginx整体结构,nginx进程模型,nginx调整worker进程数量,nginx重载配置文件,热升级,关闭

一 nginx整体结构 1.1 master进程和worker进程概览&#xff08;父子关系&#xff09; 启动nginx&#xff0c;看到了master进程和 worker 进程。 ps -ef | grep nginx 第一列&#xff1a;进程所属的用户id 第二列&#xff1a;进程ID&#xff0c;也叫做PID&#xff0c;用来唯…

@arco.design Modal renderContent 增加样式

方式一&#xff1a;通过 h 函数 import { h } from vueMessage.error({content: () > {return h(div, {}, [手机号 , h(span, { style: { color: red } }, staffPhone), 已存在])}, })方式二&#xff1a;通过 jsx 方式 注意&#xff1a;lang 需要改为 jsx 或者 tsx <s…