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

Python | 数据可视化中常见的4种标注及示例

在Python的数据可视化中,标注(Annotation)技术是一种非常有用的工具,它可以帮助用户更准确地解释图表中的数据和模式。在本文中,将带您了解使用Python实现数据可视化时应该了解的4种标注。

常见的标注方式

  • 文本标注
  • 箭头标注
  • 突出标注
  • 趋势线标注

让我们通过Python实现来了解所有这些用于数据可视化的标注技术。

文本标注

文本标注是直接添加到图表上的简短文本注释,以提供额外的上下文或突出显示重要的数据点。它们对于注意特定事件以解释趋势或注意数据中的异常情况特别有用。例如,在销售图表中,可以使用文本标注来标记新产品或营销活动的推出,以帮助查看者快速了解销售数据波动的原因。

下面是一个使用Python向图添加文本标注的示例:

import matplotlib.pyplot as pltmonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
sales = [100, 120, 90, 150, 200, 230, 210, 190, 220, 240, 250, 270]plt.plot(months, sales, marker='o')
plt.title('Monthly Sales Data')
plt.xlabel('Month')
plt.ylabel('Sales')# adding text annotations
plt.text('May', 200, 'Product Launch', fontsize=9, ha='center', color='red')
plt.text('Nov', 250,

在这里插入图片描述

箭头标注

箭头标注使用箭头直接指向图表上的特定数据点或区域,以突出显示关键元素或趋势。它们在突出离群值、指示重大变化或注意数据中值得注意的模式方面特别有效。例如,在营销支出与销售额的散点图中,箭头可以指向投资回报率异常高或异常低的离群值,以明确哪些数据点需要进一步关注。

示例:

marketing_spend = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
sales = [12, 25, 27, 35, 50, 52, 60, 65, 78, 85]plt.scatter(marketing_spend, sales)
plt.xlabel('Marketing Spend (in $1000)')
plt.ylabel('Sales (in $1000)')# adding arrow annotations
plt.annotate('High ROI', xy=(20, 25), xytext=(30, 40), arrowprops=dict(facecolor='blue', shrink=0.05))
plt.annotate('Low ROI', xy=(60, 52), xytext=(60, 90), arrowprops=dict(facecolor='red', shrink=0.05))plt.show()

在这里插入图片描述

突出标注

突出显示区域涉及对图形的特定区域进行阴影或着色,以引起对特定时间段、范围或区域的注意。此技术用于突出显示数据中的关键部分,例如高活动期、重大事件或满足某些标准的区域。例如,在市场崩溃期间突出显示区域的股票价格的时间序列图可以使观众更容易在视觉上识别影响期。

下面是一个使用Python突出显示图形中区域的示例:

import numpy as npdates = np.arange('2023-01', '2024-01', dtype='datetime64[M]')
stock_prices = np.random.randn(len(dates)).cumsum() + 100plt.plot(dates, stock_prices)
plt.title('Stock Prices Over Time')
plt.xlabel('Date')
plt.ylabel('Price')# highlighting an area
plt.axvspan('2023-06', '2023-09', color='yellow', alpha=0.3, label='Summer Period')plt.legend()

在这里插入图片描述

趋势线标注

趋势线是添加到图形中的线,用于指示数据随时间或跨变量的一般方向或模式。它们用于可视化数据集中的趋势,平均值或关系,这有助于识别长期运动和趋势。例如,在显示学习时间和考试分数之间关系的散点图中,趋势线可以通过指示更多的学习时间通常导致更高的分数来说明是否存在正相关性。

下面是一个使用Python在图表中添加趋势线的示例:

study_hours = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
scores = np.array([50, 55, 60, 65, 70, 75, 80, 85, 90, 95])plt.scatter(study_hours, scores)
plt.title('Study Hours vs Exam Scores')
plt.xlabel('Study Hours')
plt.ylabel('Scores')# adding a trend line
m, b = np.polyfit(study_hours, scores, 1)
plt.plot(study_hours, m*study_hours + b, color='red', label='Trend Line')plt.legend()

在这里插入图片描述

总结

以上这些示例涵盖了Python数据可视化中常见的4种标注方式,它们可以单独使用或组合使用,以创建更具解释性和吸引力的图表。

相关文章:

Python | 数据可视化中常见的4种标注及示例

在Python的数据可视化中,标注(Annotation)技术是一种非常有用的工具,它可以帮助用户更准确地解释图表中的数据和模式。在本文中,将带您了解使用Python实现数据可视化时应该了解的4种标注。 常见的标注方式 文本标注箭…...

LearnOpenGL学习(高级OpenGL -> 高级GLSL,几何着色器,实例化)

完整代码见:zaizai77/Cherno-OpenGL: OpenGL 小白学习之路 高级GLSL 内建变量 顶点着色器 gl_PointSoze : float 输出变量,用于控制渲染 GL_POINTS 型图元时,点的大小。可用于粒子系统。将其设置为 gl_Position.z 时,可以使点…...

Scala学习记录

dao --------> 数据访问 mode ------> 模型 service ---->业务逻辑 Main -------> UI:用户直接操作,调用Service 改造UI层:...

vue使用pdfh5.js插件,显示pdf文件白屏

pdfh5,展示文件白屏,无报错 实现效果图解决方法(降版本)排查问题过程发现问题查找问题根源1、代码写错了?2、预览文件流的问题?3、pdfh5插件更新了,我的依赖包没更新?4、真相大白 彩蛋 实现效果图 解决方法…...

docker login 出错 Error response from daemon

在自己的Linux服务器尝试登陆docker出错 输入完用户密码之后错误如下: 解决方案 1.打开daemo文件: vim/etc/docker/daemon.json 2.常用的国内Docker 镜像源地址 网易云 Docker 镜像:http://hub-mirror.c.163.com 百度云 Docker 镜像&#x…...

Web 身份认证 --- Session和JWT Token

Web 身份认证 --- Session和JWT Token 方法一: 通过使用Session进行身份认证方法二: 通过JWT token进行身份认证什么是JWTJWT完整流程JWT攻防JWT 如何退出登录JWT的续签 方法一: 通过使用Session进行身份认证 用户第一次请求服务器的时候,服务器根据用户提交的相关信…...

UE5制作倒计时功能

设置画布和文本 文本绑定 格式化时间 转到事件图表,计算时间,时间结束后面的事件可以按自己需求写 进入关卡蓝图,添加倒计时UI...

Linux去除注释和空行

平时查看某些配置文件的时,我们会发现有很多注释(如:"#"开头的行),中间还有很多空行,看起来非常费劲,所以在这里总结下如何去除注释和空行的方法。 举例说明 这里选个简单点的文件&a…...

Elasticsearch 7.x入门学习-Spring Data Elasticsearch框架

1 Spring Data框架 Spring Data 是一个用于简化数据库、非关系型数据库、索引库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持 map-reduce 框架和云计算数据服务。 Spring Data 可以极大的简化 JPA的写法,…...

网络层IP协议(TCP)

IP协议: 在了解IP协议之前,我们市面上看到的"路由器"其实就是工作在网络层。如下图: 那么网络层中的IP协议究竟是如何发送数据包的呢? IP报头: IP协议的报头是比较复杂的,作为程序猿只需要我们重…...

计算机视觉中的边缘检测算法

摘要: 本文全面深入地探讨了计算机视觉中的边缘检测算法。首先阐述了边缘检测的重要性及其在计算机视觉领域的基础地位,随后详细介绍了经典的边缘检测算法,包括基于梯度的 Sobel 算子算法、Canny 边缘检测算法等,深入剖析了它们的…...

js 常用扩展方法总结+应用

文章目录 js 常用扩展方法总结扩展方法应用选择大型项目 中扩展方法应用选择小型项目中 扩展应用 js 常用扩展方法总结 函数原型(prototype)扩展方法 介绍:在JavaScript中,通过修改函数的prototype属性可以为该函数创建的所有对象…...

数据结构---图(Graph)

图(Graph)是一种非常灵活且强大的数据结构,用于表示实体之间的复杂关系。在图结构中,数据由一组节点(或称为顶点)和连接这些节点的边组成。图可以用于表示社交网络、交通网络、网络路由等场景。 1. 基本概…...

前端解析超图的iserver xml

前端解析超图的iserver xml const res await axios.get(url)const xmlDom new DOMParser().parseFromString(res.data, text/xml);// 获取versionconst version xmlDom.getElementsByTagNameNS(*, ServiceTypeVersion)[0].textContent// 获取layerconst layerDom xmlDom.ge…...

LocalForage 使用指南:统一管理 LocalStorage、WebSQL 和 IndexedDB

前言 在前端开发中,客户端数据存储是一个至关重要的环节。无论是用户偏好设置、缓存内容,还是表单数据,都需要一个高效、可靠的存储方案。浏览器原生提供的 LocalStorage、SessionStorage 和 IndexedDB 等 API 虽然功能强大,但使…...

代码随想录算法训练营第五天-哈希-242.有效的字母异位词

这道题的总体感觉不是很难&#xff0c;但是其完成的思想还是很有趣的利用数据下标来代表字母序列然后遍历两个字符串每个字符&#xff0c;给对应字母下标的数组中一个自增&#xff0c;另一个自减通过查看最后的数组内容是不是0&#xff0c;来判断是不是异位词 #include <io…...

学习maven(maven 项目模块化,继承,聚合)

前言 本篇博客的核心&#xff1a;理解maven 项目模块化&#xff0c;继承&#xff0c;聚合 的含义 maven 项目模块化 含义 maven项目模块化&#xff1a;使用maven 构建项目&#xff0c;管理项目的方式&#xff0c;我们可以将maven项目根据内在的关系拆分成很多个小项目【模块】…...

KDD 2025预讲会:10位一作的论文分享与话题思辨|12月18日全天直播

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 圆桌思辨&#xff1a;一作们的KDD 2025投稿经验分享与热点探讨 1. KDD 2025 与往年相比有哪些新变化&#xff1f;两次投稿周期的新规则有哪些影响&#xff1f; 2. 第一篇KDD的工作是如何成功被接收的&#xff1…...

掌握特征提取:机器学习中的 PCA、t-SNE 和 LDA模型

文章目录 一、说明二、既然有 PCA 技术降维&#xff0c;为什么还要学习 t-SNE&#xff1f;2.1 t-SNE的核心思想&#xff1a;2.2 保持点之间的局部关系有什么意义&#xff1f;2.3 t-SNE 的几何直觉&#xff1a; 三、t-SNE 的数学公式&#xff1a;四、目标函数&#xff1a;五、梯…...

JAVA基础:注释

JAVA基础:注释 作用 使得代码中的一段文本不被执行,起到解释说明的作用。 分类 JAVA中的注释有三种: 单行注释 //单行注释多行注释 /* 多 行 注 释 */文档注释 /***@deprecated comments* @author lhy*/文档注释可以添加一些参数作为说明。 有趣的代码注释 卡车/* * *…...

如何快速掌握3DS硬件检测:面向初学者的完整3DSident使用指南

如何快速掌握3DS硬件检测&#xff1a;面向初学者的完整3DSident使用指南 【免费下载链接】3DSident PSPident clone for 3DS 项目地址: https://gitcode.com/gh_mirrors/3d/3DSident 你是否曾好奇自己的Nintendo 3DS内部藏着什么秘密&#xff1f;想知道它的制造日期、电…...

51单片机入门实战:用Keil+Proteus做个带蜂鸣器报警的按键计数器(附完整代码)

51单片机实战&#xff1a;从零构建带蜂鸣器报警的按键计数器 项目背景与核心功能 对于刚接触51单片机的开发者来说&#xff0c;独立完成一个小型综合项目往往能带来巨大的成就感。这次我们要实现的是一个结合按键计数、数码管显示和蜂鸣器报警的完整系统。当用户按下按键时&a…...

别再乱配了!Modbus Slave模拟器与iPlat点表地址映射的保姆级避坑指南

Modbus Slave模拟器与工业平台联调实战&#xff1a;从地址映射原理到批量读取优化 工业物联网项目中&#xff0c;Modbus协议作为最常用的数据采集标准&#xff0c;其配置过程看似简单却暗藏玄机。我曾亲眼见过一个资深工程师花了三天时间排查数据采集失败问题&#xff0c;最终发…...

利用Taotoken的Token Plan套餐,为创业项目实现精准成本控制

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用Taotoken的Token Plan套餐&#xff0c;为创业项目实现精准成本控制 对于创业团队和独立开发者而言&#xff0c;在项目初期&…...

Perplexity社会新闻搜索响应延迟突增47%?独家披露其底层新闻图谱更新机制与3类高危缓存失效场景

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Perplexity社会新闻搜索响应延迟突增47%&#xff1f;独家披露其底层新闻图谱更新机制与3类高危缓存失效场景 Perplexity 社会新闻搜索服务近期观测到 P95 响应延迟从 320ms 飙升至 468ms&#xff0c;增幅达 4…...

免费开源!掌握AMD Ryzen处理器深度调试:SMUDebugTool终极指南

免费开源&#xff01;掌握AMD Ryzen处理器深度调试&#xff1a;SMUDebugTool终极指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项…...

基于ARM核心板的T-BOX系统设计:从硬件选型到软件实现

1. 项目概述与核心价值最近几年&#xff0c;车联网的概念已经从实验室和展会&#xff0c;实实在在地走进了我们的日常生活。作为一名在嵌入式领域摸爬滚打了十几年的工程师&#xff0c;我亲眼见证了从简单的GPS定位模块&#xff0c;到如今功能高度集成的车载T-BOX&#xff08;T…...

在野火征途Pro上跑RT-Thread:手把手教你为自研RISC-V SoC移植操作系统

在野火征途Pro上跑RT-Thread&#xff1a;手把手教你为自研RISC-V SoC移植操作系统 当一块裸板首次点亮LED时&#xff0c;那种成就感就像电子工程师的"Hello World"。但要让这块板子真正活起来&#xff0c;操作系统是不可或缺的灵魂。本文将带你从零开始&#xff0c;在…...

设计个人日常用品消耗周期测算程序,测算洗护生活用品消耗速度,提前规划采购时间。

个人日常用品消耗周期测算程序——基于 Python 的生活消耗建模实验一、实际应用场景描述在城市生活中&#xff0c;大多数人都会遇到这些情况&#xff1a;- 洗发水、牙膏、洗衣液突然用完- 临时补货导致时间成本增加- 囤货过多造成过期或占用空间- 无法判断“多久买一次才合理”…...

告别connect!Qt Creator里用Lambda表达式写信号槽,代码能有多简洁?

Qt Creator中Lambda表达式重构信号槽&#xff1a;极致简洁的现代C实践 在Qt开发中&#xff0c;信号槽机制是GUI编程的核心支柱&#xff0c;但传统connect写法往往导致代码臃肿。当面对大量简单交互逻辑时&#xff0c;频繁声明槽函数和connect调用会让代码库迅速膨胀。Lambda表达…...