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

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

常见的标注方式

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

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

文本标注

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

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

import matplotlib.pyplot as plt

months = ["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 np

dates = np.arange('2023-01', '2024-01', dtype='datetime64[M]')
stock_prices = np.random.randn(len(dates)).cumsum() + 100

plt.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种标注方式,它们可以单独使用或组合使用,以创建更具解释性和吸引力的图表。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】在向量的流光中,揽数理星河为衣,以线性代数为钥,轻启机器学习黎明的瑰丽诗章

文章目录 线性代数入门:机器学习零基础小白指南前言一、向量:数据的基本单元1.1 什么是向量?1.1.1 举个例子: 1.2 向量的表示与维度1.2.1 向量的维度1.2.2 向量的表示方法 1.3 向量的基本运算1.3.1 向量加法1.3.2 向量的数乘1.3.3…

基于 JNI + Rust 实现一种高性能 Excel 导出方案(下篇)

衡量一个人是否幸福,不应看他有多少高兴的事,而应看他是否为小事烦扰。只有幸福的人,才会把无关痛痒的小事挂心上。那些真正经历巨大灾难和深重痛苦的人,根本无暇顾及这些小事的。因此人们往往在失去幸福之后,才会发现…

Cesium中实现仿ArcGIS三维的动态图层加载方式

Cesium 加载 ArcGIS 动态图层的方式 如果你在 Cesium 中加载过 ArcGIS 的动态图层,你会发现,Cesium 对于动态图层仍然采用类似切片图层的逻辑进行加载。也就是每个固定的瓦片 export 一张图片。 这样会造成一些问题: 请求量大,…

信号处理:概念、技术、领域

目录 基本概念 主要技术 应用领域 信号处理是一个涉及分析、修改和再生信号的多学科领域。信号可以是各种形式的,例如声音、图像、视频或其他类型的监测数据。信号处理的主要目标是提取有用的信息并增强信号的质量。以下是信号处理的一些基本概念和应用&#xff…

【Redis】Redis 生成唯一 id

每个订单业务都需要有一个唯一的id,如果使用数据库自增id就会暴露规律,同时id会有一个最大的阈值,万一订单超过这个阈值,那就会出现问题。因此我们可以封装一个全局ID生成器,可以适用于分布式系统生成唯一ID&#xff0…

购物商城案例 -- VueCli创建项目,调整目录,vant组件库

基于VueCli创建项目 调整目录,新增两个目录 修改路由和App.vue 路由中规则清空 新建文件夹api和utils api文件夹:发请求的一些文件 utils文件夹:工具函数方法 vant组件库:第三方vue组件库 vant-ui 找到vant官网,进入va…

金融分析-Transformer模型(基础理论)

Transformer模型 1.基本原理 transformer的core是注意力机制,其本质就是编码器-解码器。他可以通过多个编码器进行编码,再把编码完的结果输出给解码器进行解码,然后得到最终的output。 1.1编码器 数据在编码器中会经过一个self-attention的…

【密码学】AES算法

一、AES算法介绍: AES(Advanced Encryption Standard)算法是一种广泛使用的对称密钥加密,由美国国家标准与技术研究院(NIST)于2001年发布。 AES是一种分组密码,支持128位、192位和256位三种不同…

朗致面试---IOS/安卓/Java/架构师

朗致面试---IOS/安卓/Java/架构师 一、面试概况二、总结三、算法题目参考答案 一、面试概况 一共三轮面试: 第一轮是逻辑行测,25道题目,类似于公务员考试题目,要求90分钟内完成。第二轮是技术面试,主要是做一些数据结…

51c嵌入式~单片机~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/12362395 一、不同的电平信号的MCU怎么通信? 下面这个“电平转换”电路,理解后令人心情愉快。电路设计其实也可以很有趣。 先说一说这个电路的用途:当两个MCU在不同的工作电压下工作&a…

网络原理done

文章目录 ARP协议模拟一次ARP过程ARP周边问题ARP欺骗RARP DNS域名解析服务域名简介DNS结论 ICMP协议 NAT技术(重点)NAPTNAT缺点 内网穿透代理服务器正向代理反向代理 NAT和代理服务器区别 ARP协议 以这片区域为例 此时IP报文到达入口路由器R 此时路由器…

MATLAB中Simulink的信号线

Simulink以模块为最小单位,通过信号线互相连接,用户可通过GUI调配每个模块的参数,且仿真的结果能够以数值和图像等形象化方式具现出来。信号线可以传递一维数据、多维数据、向量数据或矩阵数据,甚至Bus型数据。Simulink使用不同的线形表示传递不同数据类型的信号线,…

集成方案 | Docusign + 泛微,实现全流程电子化签署!

本文将详细介绍 Docusign 与泛微的集成步骤及其效果,并通过实际应用场景来展示 Docusign 的强大集成能力,以证明 Docusign 集成功能的高效性和实用性。 在现代企业运营中,效率和合规性是至关重要的。泛微作为企业级办公自动化和流程管理的解决…

基于vue的quasarui框架和.NET CORE实现网站

首先安装quasar cli,然后进行配置 前台代码部分截图 后台部分截图 数据库 网站部分

一行代码解决vue3前端打包部署到服务器,动态配置http请求头后端ip方法教程无bug

只需要一行代码 vue3若依框架前端打包部署到服务器,需要部署到多个服务器上,每次打包会很麻烦,今天教大家一个简单的动态配置请求头api的方法,部署后能动态获取(修改)对应服务器的请求ip, 介绍两种方法,如…

openGauss开源数据库实战二十三

文章目录 任务二十三 openGauss 参数管理任务目标实施步骤一、启动参数文件及参数类型1.参数值修改后必须重新启动数据库的参数2.参数值修改后只需要reload操作的参数 二、设置数据库级参数三、设置用户级参数四、设置会话级参数五、将参数设置为默认值 任务二十三 openGauss 参…

杨振宁大学物理视频中黄色的字,c#写程序去掉(原版改进,三)

上一节,我们分清了主次矛盾,并搞定了主要矛盾(去掉黄色的字),这一节解决次要矛盾(矩形色带)。 我们的想法如图: 1,我们找到稳定黄色的最左边,最右边两点&…

ORACLE逗号分隔的字符串字段,关联表查询

使用场景如下: oracle12 以前的写法: selectt.pro_ids,wm_concat(t1.name) pro_names from info t,product t1 where instr(,||t.pro_ids|| ,,,|| t1.id|| ,) > 0 group by pro_ids oracle12 以后的写法: selectt.pro_ids,listagg(DIS…

JS-手写new

我们先再来理一理原型 Object1 {name:deng,age:18 } Object2 {name:ru,age:18 } const Person function(){} Person.prototype Object1; const p1 new Person(); console.log(p1.name); //deng Person.prototype null; console.log(p1.name); //deng上面给Person的构造函…

LabVIEW实验站反馈控制系统

开发了一套基于LabVIEW的软X射线磁性圆二色实验站的反馈控制系统。这套系统主要用于实现对实验站高电压的精确控制,从而保持照射在样品上的流强稳定性,为分析样品吸收谱提供可靠基准,同时提供了易用的用户界面和强大的数据存储功能。 项目背景…