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

解决散点图绘制算法单一导致的数据异常问题

背景  在后端渲染数据时,采用的是中位数过滤,这就导致后端数据库对应的数据中,如果0过多,会把0当做正常数据,其他值会被当做异常值去掉,导致渲染的图是一条直线

解决方法 在图表的上方配置中加一个按钮,点击按钮切换另一个算法继续渲染

在配置中添加按钮的标志和图片

在图绘制的时候会传递默认的算法模式

这里传进来的模式是回调的时候传进来的,一开始初始化的时候是undefined

添加回调函数进行算法切换

渲染按钮

模式切换采用三目运算符进行循环切换

const newMode = currentMode === 'mad' ? 'gauss' : (currentMode === 'gauss' ? 'MediamFilter_3' : 'mad');
       if (!_feature || _feature.algorithmSwitch) {let algorithmId = "algorithmContent" + new Date().getTime()let algorithmContent = $(`<div id="${algorithmId}" style="display:none"><div style="padding:5px;">切换绘图算法</div></div>`)parent.prepend(algorithmContent)let algorithmSwitch = $(`<i><img src="${icons['turn']}" ${toolbarStyle} data="algorithmSwitch" /></i>`)parent.prepend(algorithmSwitch)algorithmSwitch.webuiPopover({ content: '切换绘图算法', trigger: 'hover' });algorithmSwitch.click(() => {// 切换算法模式const currentMode = that.rawOption.algorithmMode || that.options.algorithmMode;console.log('切换前算法模式:', currentMode);const newMode = currentMode === 'mad' ? 'gauss' : (currentMode === 'gauss' ? 'MediamFilter_3' : 'mad');console.log('切换后算法模式:', newMode);// 更新options和rawOptionthat.options.algorithmMode = newMode;that.rawOption.algorithmMode = newMode;console.log('更新后rawOption.algorithmMode:', that.rawOption.algorithmMode);// 更新悬停提示algorithmSwitch.webuiPopover('destroy');algorithmSwitch.webuiPopover({ content: `当前算法: ${newMode}`, trigger: 'hover' });// 调用回调函数(如果存在)if (typeof that.options.onAlgorithmChange === 'function') {console.log('调用回调函数');that.options.onAlgorithmChange(newMode);}})}

调用回调函数重新进行获取数据绘图,将模式传入,后端接收模式后进行判断,选择算法

具体的算法中位数 高斯滤波 平滑窗口算法

http://www.dtcms.com/a/346708.html

相关文章:

  • DeepSpeed v0.17.5发布:优化性能与扩展功能的全新升级
  • Axure:有个特别实用的功能
  • 寻找AI——高保真还原设计图生成App页面
  • 【K8s】整体认识K8s之Docker篇
  • 完整实验命令解析:从集群搭建到负载均衡配置
  • 在TencentOS3上部署OpenTenBase:从入门到实战的完整指南
  • week4-[循环结构]生日悖论-new
  • 【C语言16天强化训练】从基础入门到进阶:Day 8
  • 【基础-判断】Video组件可以支持本地视频路径和网络路径播放。播放网络视频时,需要申请权限ohos.permission.INTERNET
  • Clustering Enabled Wireless Channel Modeling Using Big Data Algorithms
  • 学习游戏制作记录(合并更多的技能与技能树)8.23
  • 祝贺,国产轻量级桌面GIS软件Snaplayers下载量突破上万
  • 【技术突破】动态目标误检率↓83.5%!陌讯多模态融合算法在智慧城管的实战优化
  • 算法训练营day60 图论⑩ Bellman_ford 队列优化算法、判断负权回路、单源有限最短路
  • Kubernetes笔记整合-1
  • 定时器互补PWM输出和死区
  • 【手撕JAVA多线程:2.线程安全】 2.1.JVM层面的线程安全保证
  • 硬件-时钟学习DAY5——石英晶体负载电容设计全解析
  • Adobe Acrobat 创建和分发交互式 PDF 表单
  • lanczso算法中的额外正交化代码解释
  • Java性能优化实战(六):缓存策略的3大核心优化方向
  • 新手向:异步编程入门asyncio最佳实践
  • PyTorch生成式人工智能——VQ-VAE详解与实现
  • chapter06_应用上下文与门面模式
  • pcie实现虚拟串口
  • k8s之 Pod 资源管理与 QoS
  • 深入理解 C++ SFINAE:从编译技巧到现代元编程的演进
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(八)按键事件
  • vscode 中自己使用的 launch.json 设置
  • SpringBoot中实现接口查询数据动态脱敏