【Python】如何为Matplotlib图像添加标签?

news2024/12/25 0:59:27

一、添加文本标签 plt.text()

用于在绘图过程中,在图像上指定坐标的位置添加文本。需要用到的是plt.text()方法。

其主要的参数有三个:

plt.text(x, y, s)

其中x、y表示传入点的x和y轴坐标。s表示字符串。

需要注意的是,这里的坐标,如果设定有xticks、yticks标签,则指的不是标签,而是绘图时x、轴的原始值。

因为参数过多,不再一一解释,根据代码学习其用法。

ha = 'center’表示垂直对齐方式居中,fontsize = 30表示字体大小为30,rotation = -25表示旋转的角度为-25度。c 设定颜色,alpha设定透明度。va表示水平对齐方式。

1. 示例

代码在图像中添加了两段文本,一段是“旅途中的宽~”的斜体水印,透明度为0.4。

另一段是在折线的每个折点附近标出当天收盘价。

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = range(9)
y = [5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31]
c = 0.5 * (min(x) + max(x))
d = min(y) + 0.3 * (max(y) - min(y))
# 水印效果
plt.text(c, d, '旅途中的宽~', ha = 'center', fontsize = 30, rotation = -25, c = 'gray', alpha = 0.4)
plt.plot(x, y, label = '股票A收盘价', c = 'r', ls = '-.', marker = 'D', lw = 2)
plt.xticks(x, [
	'2022-03-27', '2022-03-28', '2022-03-29', '2022-03-30',
	'2022-03-31', '2022-04-01', '2022-04-04', '2022-04-05',
	'2022-04-06'], rotation = 45)
plt.title('某股票收盘价时序图')
plt.xlabel('日期')
plt.ylabel('价格')
plt.grid(True)
plt.legend()
# 标出每天的收盘价
for a, b in zip(x, y):
	plt.text(a, b + 0.01, '%.2f' % b, ha = 'center', va = 'bottom', fontsize = 14)
plt.show()

在这里插入图片描述

二、添加注释 plt.annotate()

在上例代码的基础之上,添加注释。注释即对图像中某一位置的解释,可以用箭头来指向。

添加注释使用的是plt.annotate()方法

其语法中的常用参数如下

plt.annotate(str,xy,xytext,xycoords,arrowcoords)

其中str即注释要使用的字符串,即注释文本;xy指被注释的坐标点;xytext指注释文本要写在的位置;xycoords是被注释的点的坐标系属性,即以什么样的方式描述该点的坐标。设置值默为"data",即用(x,y)坐标来描述。其他可以选择的设置值如下,其中figure指的是整个画布作为一个参考系。而axes则表示仅对于其中的一个axes对象区域。

在这里插入图片描述
arrowprops是一个字典,用来设置箭头的属性。写在这个字典之外的参数都表示的是注释文本的属性。

字典内可以设置的值有:
在这里插入图片描述
关于这些参数的进一步解释:其中箭头的总长度先是通过被注释点位置坐标 与 注释文本位置坐标 所决定的,可以通过调节参数arrowprops中的shrink键来进一步调节箭头的长度,shrink表示将箭头缩短的长度占总长度(被注释点位置坐标 与 注释文本位置坐标 决定的长度)的百分比。当不设定shrink时,shrink默认为0,即不缩短。当shrink很大,接近1时,其效果等同于不缩短。

1. 示例

以标出图中的最低价的点为例。在目标位置添加一个红色的箭头,及“最低价”三个字。

其他更多参数,如关于设置注释文本的字体的,c或color表示颜色,fontsize表示字体大小。更多属性自行了解尝试。

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = range(9)
y = [5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31]
c = 0.5 * (min(x) + max(x))
d = min(y) + 0.3 * (max(y) - min(y))
# 仿水印效果
plt.text(c, d, '旅途中的宽', ha = 'center', fontsize = 30, rotation = -25, c = 'gray', alpha = 0.4)
plt.plot(x, y, label = '股票A收盘价', c = 'r', ls = '-.', marker = 'D', lw = 2)
# plt.plot([5.09, 5.13, 5.16, 5.12, 5.09, 5.25, 5.16, 5.20, 5.25], label='股票B收盘价', c='g', ls=':', marker='H', lw=4)
plt.xticks(x, [
    '2022-03-27', '2022-03-28', '2022-03-29', '2022-03-30',
    '2022-03-31', '2022-04-01', '2022-04-04', '2022-04-05',
    '2022-04-06'], rotation = 45)
plt.title('某股票收盘价时序图')
plt.xlabel('日期')
plt.ylabel('价格')
plt.grid(True)
plt.legend()
# 标出每天的收盘价
for a, b in zip(x, y):
    plt.text(a, b + 0.01, '%.3f'% b, ha = 'center', va = 'bottom', fontsize = 9)
# 添加注释
plt.annotate('最低价', (x[y.index(min(y))], min(y)), (x[y.index(min(y))] + 0.5, min(y)), xycoords = 'data',
             arrowprops = dict(facecolor = 'r', shrink = 0.1), c = 'r',fontsize = 15)
plt.show()

在这里插入图片描述

下边换一种效果呈现,添加的注释箭头宽度为3,箭头的头部宽度为10,长度为20,缩短0.05,且箭头为绿色,注释字体为红色。代码示例如下:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = range(9)
y = [5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31]
c = 0.5 * (min(x) + max(x))
d = min(y) + 0.3 * (max(y)-min(y))
plt.plot(x, y, label = '股票A收盘价', c = 'k', ls = '-.', marker = 'D', lw = 2)
plt.xticks(x, [
    '2022-03-27', '2022-03-28', '2022-03-29', '2022-03-30',
    '2022-03-31', '2022-04-01', '2022-04-04', '2022-04-05',
    '2022-04-06'], rotation = 45)
plt.title('某股票收盘价时序图')
plt.xlabel('日期')
plt.ylabel('价格')
plt.grid(True)
plt.legend()
# 标出每天的收盘价
for a, b in zip(x, y):
    plt.text(a, b+0.01, '%.1f'%b, ha='center', va='bottom', fontsize=9)
plt.text(c, d, '旅途中的宽', ha = 'center', fontsize = 50, rotation = -25, c = 'r')
plt.annotate('最低价', (x[y.index(min(y))], min(y)), (x[y.index(min(y))] + 2, min(y)), xycoords = 'data',
             arrowprops = dict(width = 3, headwidth = 10, headlength = 20, facecolor = 'g', shrink = 0.05), c = 'r',fontsize = 20)
plt.show()

在这里插入图片描述

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

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

相关文章

基于Springboot+Mybatis+mysql+vue电影院在线售票系统

基于SpringbootMybatismysqlvue电影院在线售票系统一、系统介绍二、所用技术三、功能展示1.主页(普通用户)2.影院管理员相关功能(影院管理员)3.系统管理权限(管理员)四、获取源码一、系统介绍 电影院网上售票系统拥有三种角色,用户、工作人员…

三星K2200复印机提示更换传输卷问题的简单处理

故障现象: 三星K2200复印机开机后提示更换传输卷; 故障分析与处理: 三星K2200复印机提示更换传输卷是转印带使用寿命到期,三星k2200复印件更换传输卷,是指转印带使用寿命到期了,需要更换传输卷。如果这台机器报传输卷一般是这台机器也有一条转印带,如果报这个看看上面…

C/C++数据结构(十一)—— 平衡二叉树(AVL树)

文章目录1. AVL树的概念2. AVL树的结点3. AVL树的插入🍑 更新平衡因子🍑 插入函数的实现4. AVL树的旋转🍑 左单旋🍑 右单旋🍑 左右双旋🍑 右左双旋🍑 总结6. AVL树的删除🍑 算法思想…

基于EasyExcel实现百万级数据导入导出

基于EasyExcel实现百万级数据导入导出 在项目开发中往往需要使用到数据的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。 大数据的导入和导出,相信大家在日常的开发、面试中都会遇到。 很多问题只要这一次…

2022-12-08版本:Open Inventor Toolkit SDK Crack

为什么使用 Open Inventor Toolkit Open Inventor SDK 是一种商业 3D 软件开发工具包 ( SDK ),适用于医疗和牙科、石油和天然气、工程领域的专业应用。 Open Inventor其面向对象的 API、可扩展的架构及其大量高级组件为软件开发人员提供了一个高级平台,…

JUC面试(五)——Collection线程不安全

Collection线程不安全 前言 当我们执行下面语句的时候&#xff0c;底层进行了什么操作 new ArrayList<Integer>(); 底层创建了一个空的数组&#xff0c;伴随着初始值为10 当执行add方法后&#xff0c;如果超过了10&#xff0c;那么会进行扩容&#xff0c;扩容的大小…

Spring源码学习:三级缓存的必要性

目录前言概述正文Spring的生命周期Spring中循环依赖场景Spirng中的三级缓存Spring一级缓存解决循环依赖Spring二级缓存解决循环依赖Spring三级缓存解决循环依赖总结前言 工作中可能会碰到循坏依赖问题&#xff0c;所以了解其Spring设计原理&#xff0c;对于解决问题更加高效。…

c++ - 第26节 - c++知识梳理

1.STL知识梳理 STL知识掌握&#xff1a; 底层实现角度&#xff1a;六大组件 上层用的角度&#xff1a;容器、算法、迭代器 底层实现角度&#xff1a; 注&#xff1a; 1.可以认为迭代器是容器和算法的粘合剂&#xff0c;如果没有迭代器&#xff0c;那么算法要访问容器有两大问题…

三种循环的区别

三种循环的区别:1.for循环和while循环先判断条件是否成立&#xff0c;然后决定是否执行循环体&#xff08;先判断后执行)2.do..while循环先执行一次循环体&#xff0c;然后判断条件是否成立&#xff0c;是否继续执行循环体(先执行后判断)for和while的区别:1.条件控制语句所控制…

英语学习打卡day2

2023.1.20 1.if虚拟语气的倒装 If it were not for your help, I would be homeless. Were it not for your help, I would be homeless. 要不是你的帮助&#xff0c;我会无家可归。 2.plausible adj.似乎有理的;有道理的 plaus拍手&#xff0c;鼓掌 ible可…的- >能鼓掌的…

注册中心(一)

注册中心&#xff08;一&#xff09; 业务痛点 项目的架构从以前的单体结构发展到现在的微服务。不仅服务的数量变的多了&#xff0c;而且服务都是多节点的部署。 假如在serviceA去调用serviceB&#xff0c;当serviceA会在配置中配置一个serviceB的ip和port进行通信。 当se…

如何安装配置hbase

当完成hdfs、zookeeper的安装配置后&#xff0c;现在进入到hbase的安装和配置环节。这样的做的目的之一是要把海量的数据存入到hbase数据库中。JDK版本的要求hbase对JDK版本是有要求的&#xff0c;不是JDK版本越高越好&#xff0c;根据我走过的坑&#xff0c;目前最好的JDK版本…

LeetCode刷题复盘笔记—一文搞懂贪心算法之122. 买卖股票的最佳时机 II问题(贪心算法系列第三篇)

今日主要总结一下可以0贪心算法解决的一道题目&#xff0c;122. 买卖股票的最佳时机 II 题目&#xff1a;122. 买卖股票的最佳时机 II Leetcode题目地址 题目描述&#xff1a; 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&am…

深度学习实战 —— LSTM轨迹预测

前言 最近写了一份用LSTM之类的序列模型+SeNet预测轨迹,经过一系列调试效果最后比较理想了。记录下~ 上效果: 一些效果图 训练误差图: 测试误差图: 训练损失: 测试损失: batch平均耗时: 拟合效果:

(day7) 自学Java——面向对象进阶

目录 1.static静态变量 ​编辑 2.继承 ​编辑 3.多态 4.包、final、权限修饰符、代码块 5.抽象类 6.接口 7.内部类 非原创&#xff0c;为方便自己后期复习 1.static静态变量 静态存储位置的数据是共享的 练习&#xff1a;定义数组工具类 需求&#xff1a;在实际开发…

深度卷积对抗神经网络 基础 第二部分 DC-GANs

深度卷积对抗神经网络 基础 第二部分 DC-GANs DC-GANs &#xff08;DC-GANs Deep convolutional GAN&#xff09;是基于GANs的一种专门对图片生成的一种模型&#xff0c;其通过卷积操作来进行图片的一些基本操作来实现模型的功能。 激活函数 Activations 激活函数是任何输入…

代码随想录--哈希表章节总结

代码随想录–哈希表章节总结 1. LeetCode242 有效的字母异位词 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同&#xff0c;则称 s 和 t 互为字母异位词。 示例 1: 输入: s &quo…

高德地图红绿灯读秒是怎么实现的?(二)

通过上一篇高德官方回复&#xff0c;以及一些科技大佬们的脑回路&#xff0c;做了一些简单的回复&#xff1b; 这次好好的从个人研究观点来阐述一下这个论题 目前有两种说法&#xff0c;一种说是靠大数据分析&#xff0c;一种说是靠交管部门数据。 从个人的研究来看&#xff0…

socket 2---TCP编程

目录 一、TCP编程流程 二、函数接口 2.1、监听接口 2.2、发起连接 connect 2.3、接收新连接 accept 2.4、收发接口 三、代码实现 问题&#xff1a; 要是创建多个客户端的话会怎么样呢&#xff1f; 那么怎么去真正解决这个问题呢&#xff1f; 一、TCP编程流程 这里…

数据结构与算法基础(王卓)(9):线性表的应用(有序表合并)(有序,可重复)

PPT&#xff1a;第二章P176&#xff1b; 合并为一个新的整体&#xff1a;有序表的合并&#xff08;有序&#xff0c;可重复&#xff09; 线性表&#xff1a; 对于该操作的具体实现的流程设计&#xff1a;&#xff08;各模块&#xff09; 创建一个空表C 依次从A或B(中&#…