【Echarts实践案例】如何在线图上标记一个非轴线上的点

2024-01-03 23:12

本文主要是介绍【Echarts实践案例】如何在线图上标记一个非轴线上的点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

需求背景:

当前有一个趋势图,横坐标表示灯泡平均使用时长,纵坐标表示灯泡平均使用温度。现在需要在当前坐标系下标记一个正在使用中的灯泡的时长及温度(趋势图表示的是计算出的平均温度,所以当前灯泡的温度可能不会在趋势线上,实时使用时长可能也没有对应的横坐标轴点)

实现目标:

image.png

实现方案:

方案1:使用双数值轴 + markPoint

🤔 为什么要使用双数值轴

👏 如果想要标记一个非轴点上的点,那当前轴只能是数值轴,这样才能够准确计算对应坐标系的坐标值。如果轴是类目轴,在计算坐标值时会被认做Index值或就近计算为相近的轴点。官方链接:https://echarts.apache.org/zh/option.html#series-line.markPoint.data.coord

image 1.png

🤔 如何实现双数据轴

option = {xAxis: {type: 'value'},yAxis: {type: 'value'},// 注意Series数据类型// 如果是单数值轴,data属性的值为一维数组[10,20,30......]// 此时是双数值轴,data属性的值为二维数组,每一项表示一个具体的点[[x1,y1],[x2,y2],[x3,y3]...]series: [{data: [[10, 30],[20, 45],[40, 55],[50, 70],[70, 89],],type: 'line'}]
};
   const option = {xAxis: {},yAxis: {},dataset: {source: [[10, 40],[20, 50],[30, 60],[40, 80],[50, 100],[60, 120],]},series: [{type: 'line'}]};

🤔 如何在双数据轴上标记一个非线上的点

👏 使用 markPoint 图标标注,标注点支持的数据位置有以下三种方式,在当前需求中,我们知道点的具体坐标值,所以可以采用第二种(coord)的方式定位

  1. 通过 x, y 属性指定相对容器的屏幕坐标,单位像素,支持百分比。【优先级最高】

  2. 用 coord 属性指定数据在相应坐标系上的坐标位置,单个维度支持设置 'min', 'max', 'average'。【第二优先级】

  3. 直接用 type 属性标注系列中的最大值,最小值。【第三优先级】

🤔 如果我想在ToolTip时给这个点添加一些特殊的提示信息怎么办?

tooltip:{trigger: 'item' , // 设置触发方式为itemformatter(params){// 根据当前触发的组件类型进行判断,为标记点单独添加对应的提示信息if (params.componentType === 'markPoint') {return `notes: ${params.data.notes}`}return `灯泡使用时长${params.value[0]}h, 平均温度${params.value[1]}`;},
},

👏 完整配置项

 const option = {xAxis: {max: 'dataMax',boundaryGap: true,splitLine: {show: false,},},yAxis: {},dataset: {source: [[10, 40],[20, 50],[30, 60],[40, 80],[50, 100],[60, 120],]},tooltip:{ show: true, // 双数据轴时,默认不显示tooltip,需要手动配置一个空的tooltip显示trigger: 'item' , // 设置触发方式为itemformatter(params){// 根据当前触发的组件类型进行判断,为标记点单独添加对应的提示信息if (params.componentType === 'markPoint') {return `notes: ${params.data.notes}`}return `灯泡使用时长${params.value[0]}h, 平均温度${params.value[1]}`;},},series: [{smooth: false,type: 'line',markPoint: {symbol: 'circle',symbolSize: 12,itemStyle: {color: 'green',},data: [{coord: [35, 80], // 标记点坐标notes: '使用中的灯泡', // 需要在tooltip中使用的数据可以放在这里}],}}]};

👏 显示效果

image 2.png

方案2:SeriesLine + SeriesCustom

🤔 什么是多个Series使用同一个坐标系

👏 在 ECharts 中,多个系列(Series)使用同一个坐标系是指在同一个图表中存在多个不同的数据系列,它们共享相同的坐标轴。这样的设计使得用户能够在同一图表中比较不同系列之间的关系,例如趋势、变化等。

🤔 用什么系列可以绘制一个点

👏 使用自定义系列(Custom),可以自由定义需要绘制的形状,图形渲染逻辑:https://echarts.apache.org/zh/option.html#series-custom.renderItem

  const option = {xAxis: {},yAxis: {},series: [{// 线图系列smooth: false,data: [40, 50, 60, 80, 100, 120],type: 'line',},{// 自定义图表系列type: 'custom',renderItem: function (params, api) { // 图形渲染的逻辑var x = api.coord([api.value(0), api.value(1)])[0];var y = api.coord([api.value(0), api.value(1)])[1];return {type: 'circle',shape: {cx: x,cy: y,r: 6},style: api.style()};},data: [[55, 70]],}]};

👏 渲染效果

image 3.png

这篇关于【Echarts实践案例】如何在线图上标记一个非轴线上的点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/567366

相关文章

Java 正则表达式的使用实战案例

《Java正则表达式的使用实战案例》本文详细介绍了Java正则表达式的使用方法,涵盖语法细节、核心类方法、高级特性及实战案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、正则表达式语法详解1. 基础字符匹配2. 字符类([]定义)3. 量词(控制匹配次数)4. 边

Python Counter 函数使用案例

《PythonCounter函数使用案例》Counter是collections模块中的一个类,专门用于对可迭代对象中的元素进行计数,接下来通过本文给大家介绍PythonCounter函数使用案例... 目录一、Counter函数概述二、基本使用案例(一)列表元素计数(二)字符串字符计数(三)元组计数三、C

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Spring Boot 整合 SSE(Server-Sent Events)实战案例(全网最全)

《SpringBoot整合SSE(Server-SentEvents)实战案例(全网最全)》本文通过实战案例讲解SpringBoot整合SSE技术,涵盖实现原理、代码配置、异常处理及前端交互,... 目录Spring Boot 整合 SSE(Server-Sent Events)1、简述SSE与其他技术的对

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时

MySQL 数据库表与查询操作实战案例

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧... 目录mysql 数据库表操作与查询实战案例项目一:产品相关数据库设计与创建一、数据库及表结构设计二、数据库与表的创建项目二:员

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

C#中的Drawing 类案例详解

《C#中的Drawing类案例详解》文章解析WPF与WinForms的Drawing类差异,涵盖命名空间、继承链、常用类及应用场景,通过案例展示如何创建带阴影圆角矩形按钮,强调WPF的轻量、可动画特... 目录一、Drawing 是什么?二、典型用法三、案例:画一个“带阴影的圆角矩形按钮”四、WinForm