echarts画风向杆
1.安装echarts
2.引入echarts

4.获取数据,转换数据格式
windProfile.title.text = `${moment(time.searchTime[0], ‘YYYY-MM-DD HH:mm:ss’).format(
‘YYYY-MM-DD HH:mm’
)}-${moment(time.searchTime[1], ‘YYYY-MM-DD HH:mm:ss’).format(‘YYYY-MM-DD HH:mm’)}——水平风风羽图`
data.forEach(item => {
windProfile.xAxis.data.push(moment(item.time, ‘YYYY-MM-DD HH:mm:ss’).format(‘HH:mm’))
arr = item.fengKuoXianItems.filter(
i => heightRange.less * 1000 <= i.height && i.height <= heightRange.greater * 1000
)
arr.forEach(item1 => {
if (item1.direction && item1.speed) {
windProfile.series[0].data.push({
value: [
moment(item.time, ‘YYYY-MM-DD HH:mm:ss’).format(‘HH:mm’),
item1.height,
transformationSpeed(item1.speed),
item1.direction > 9999 ‘’ : getWindPower(item1.direction),
item1.speed > 9999 ‘’ : getWindSpeed(item1.speed),
item1.speed > 9999 ‘’ : item1.speed.toFixed(2)
],
label: {
rotate: -item1.direction,
color: `rgba(${getColor(colorData.value[0].stops, item1.speed).stop.join(‘,’)})`
}
})
}
})
})

1)转换字体根据风速转字体
const transformation = [
//风速转字体
[1, ‘m’, 0],
[3, ‘k’, 1],
[5, ‘1’, 2],
[7, ‘2’, 3],
[9, ‘3’, 4],
[11, ‘4’, 5],
[13, ‘5’, 6],
[15, ‘6’, 7],
[17, ‘7’, 8],
[19, ‘n’, 9],
[21, ‘8’, 10],
[23, ‘9’, 11],
[25, ‘:’, 12],
[27, ‘;’, 13],
[29, ‘<’, 14],
[31, ‘=’, 15],
[33, ‘>’, 16],
[35, ‘’, 17],
[37, ‘@’, 18],
[39, ‘A’, 19],
[41, ‘B’, 20],
[43, ‘C’, 21],
[45, ‘D’, 22],
[47, ‘E’, 23],
[49, ‘F’, 24],
[51, ‘G’, 25],
[53, ‘H’, 26],
[55, ‘I’, 27],
[57, ‘J’, 28],
[999, ‘K’, 28]
]
//根据风速转字体
const transformationSpeed = speed => {
for (let t = 0; t < transformation.length; t++) if (Number(speed) <= transformation[t][0]) return transformation[t][1]
return ‘0’
}
注意修改echarts里series的配置项

2)转换风向
const windPower = [
//风向
[11.25, ‘北风’],
[33.75, ‘东北风’],
[56.25, ‘东北风’],
[78.75, ‘东北风’],
[101.25, ‘东风’],
[123.75, ‘东南风’],
[146.25, ‘东南风’],
[168.75, ‘东南风’],
[191.25, ‘南风’],
[213.75, ‘西南风’],
[236.25, ‘西南风’],
[258.75, ‘西南风’],
[281.25, ‘西风’],
[303.75, ‘西北风’],
[326.25, ‘西北风’],
[348.75, ‘西北风’],
[1e3, ‘西北风’]
]
// 获取风向
const getWindPower = e => {
for (let t = 0; t < windPower.length; t++) if (e < windPower[t][0]) return windPower[t][1]
return ‘无风’
}
3)转换风速
const windSpeed = [
//风速
[0.2, 0],
[1.5, 1],
[3.3, 2],
[5.4, 3],
[7.9, 4],
[10.7, 5],
[13.8, 6],
[17.1, 7],
[20.7, 8],
[24.4, 9],
[28.4, 10],
[32.6, 11],
[36.9, 12],
[41.4, 13],
[46.1, 14],
[50.9, 15],
[56, 16],
[61.2, 17]
]
//获取风速
const getWindSpeed = e => {
for (let t = 0; t < windSpeed.length; t++) if (e < windSpeed[t][0]) return windSpeed[t][1].toFixed(2)
return ‘0’
}
4)转换风字体颜色
const colorData = ref([
{
stops: [
{ value: 0.2, stop: [176, 224, 248, 1] },
{ value: 2.6, stop: [144, 208, 248, 1] },
{ value: 3.4, stop: [120, 184, 248, 1] },
{ value: 5.5, stop: [80, 160, 240, 1] },
{ value: 8, stop: [60, 120, 220, 1] },
{ value: 10.8, stop: [40, 100, 200, 1] },
{ value: 13.9, stop: [0, 176, 8, 1] },
{ value: 17.2, stop: [248, 248, 0, 1] },
{ value: 20.8, stop: [248, 168, 0, 1] },
{ value: 24.5, stop: [248, 80, 0, 1] },
{ value: 28.5, stop: [248, 0, 0, 1] },
{ value: 32.7, stop: [248, 24, 80, 1] },
{ value: 37, stop: [240, 48, 152, 1] },
{ value: 46.2, stop: [232, 80, 232, 1] },
{ value: 51, stop: [224, 72, 72, 1] },
{ value: 56.1, stop: [200, 56, 56, 1] },
{ value: 61.3, stop: [160, 24, 32, 1] }
],
fieldName: ‘wind’
}
])
// 风字体颜色
const getColor = (e, speed) => {
let n = e[e.length - 1]
const i = e.find(e => {
if (speed <= e.value) return (n = e), n
})
return i && (n = i), n
}
欢迎补充,一起进步。
相关文章:
echarts画风向杆
1.安装echarts 2.引入echarts 4.获取数据,转换数据格式 windProfile.title.text ${moment(time.searchTime[0], ‘YYYY-MM-DD HH:mm:ss’).format( ‘YYYY-MM-DD HH:mm’ )}-${moment(time.searchTime[1], ‘YYYY-MM-DD HH:mm:ss’).format(‘YYYY-MM-DD HH:mm’)…...
【LeetCode每日一题】LeetCode 345.反转字符串中的元音字母
LeetCode 345.反转字符串中的元音字母 题目描述 给定一个字符串 s,你需要反转字符串中所有的元音字母,并返回新的字符串。 元音字母是 a, e, i, o, u,这些字母的大小写都会被考虑。 示例 1: 输入: s "hello" 输出: "holle…...
蓝桥杯练习生第四天
小蓝每天都锻炼身体。 正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。 小蓝跑步已经坚持了很长时间&#x…...
cesium 常见的 entity 列表
Cesium 是一个用于创建3D地球和地图的开源JavaScript库。它允许开发者在Web浏览器中展示地理空间数据,并且支持多种类型的空间实体(entities)。 Entities是Cesium中用于表示地面上或空中的对象的一种高层次、易于使用的接口。它们可以用来表示点、线、多边形、模型等,并且可…...
Java旅程(五)Spring 框架与微服务架构 了解 JVM 内部原理和调优
在现代企业级应用中,Spring 框架和微服务架构已经成为主流技术,而 Java 虚拟机(JVM)的理解和调优对于保证应用的高性能和稳定性也至关重要。本篇博客将深入讲解 Spring 框架与微服务架构,并进一步探讨 JVM 内部原理和调…...
Niushop-master靶场漏洞
靶场搭建 将 niushop-master.zip 压缩包放到网站的根目录,解压后访问 浏览器访问 install.php ,根据提示安装即可 1.SQL注入漏洞 随便选择一种商品分类,发现有参数,测试注入 测试闭合发现页面报错有sql注入 应该是环境的问题&am…...
35道面向初中级前端的基础面试题
新鲜出炉的8月前端面试题 跨域资源共享 CORS 阮一峰 3. JSONP 是什么? 这是我认为写得比较通俗易懂的一篇文章jsonp原理详解——终于搞清楚jsonp是啥了。 4. 事件绑定的方式 嵌入dom 按钮 直接绑定 btn.onclick function(){} 事件监听 btn.addEventList…...
MFC用List Control 和Picture控件实现界面切换效果
添加List Control 和Picture控件 添加 3个子窗体 把子窗体边框设置为None, 样式设为Child 声明 CListCtrl m_listPageForm;void ShowForm(int nIndex);void CreatFormList();void CMFCApplication3Dlg::DoDataExchange(CDataExchange* pDX) {CDialogEx::DoDataExchange(pDX);DD…...
1. 解决前端vue项目 vite打包内存溢出问题
探索问题原因: 项目开发时正常运行不影响,打包出现上图错误,意味着打包过程中消耗了太多的内存导致的。 解决方法: 在 package.json中的打包命令替换如下: 解决前: "build:dev": "vite…...
Springboot高并发乐观锁
Spring Boot分布式锁的主要缺点包括但不限于以下几点: 性能开销:使用分布式锁通常涉及到网络通信,这会引入额外的延迟和性能开销。例如,当使用Redis或Zookeeper实现分布式锁时,每次获取或释放锁都需要与这些服务进行交…...
【WPS安装】WPS编译错误总结:WPS编译失败+仅编译成功ungrib等
WPS编译错误总结:WPS编译失败仅编译成功ungrib等 WPS编译过程问题1:WPS编译失败错误1:gfortran: error: unrecognized command-line option ‘-convert’; did you mean ‘-fconvert’?解决方案 问题2:WPS编译三个exe文件只出现u…...
pytorch MoE(专家混合网络)的简单实现。
专家混合(Mixture of Experts, MoE)是一种深度学习模型架构,通常用于处理大规模数据和复杂任务。它通过将输入分配给多个专家网络(即子模型),然后根据门控网络(gating network)的输出…...
虚拟机VMware的安装问题ip错误,虚拟网卡
要么没有虚拟网卡、有网卡远程连不上等 一般出现在win11 家庭版 1、是否IP错误 ip addr 2、 重置虚拟网卡 3、查看是否有虚拟网卡 4、如果以上检查都解决不了问题 如果你之前有vmware 后来卸载了,又重新安装,一般都会有问题 卸载重装vmware: 第一…...
Linux下基于最新稳定版ESP-IDF5.3.2开发esp32s3入门hello world输出【入门一】
开发环境搭建:Linux-Ubuntu下搭建ESP32的开发环境的步骤,使用乐鑫最新稳定版的esp-idf-CSDN博客 一、安装好开发环境后,在esp目录下再创建一个esp32的目录【用于编程测试demo】 二、进入esp32目录,打开终端【拷贝esp-idf的hello工…...
重温设计模式--命令模式
文章目录 命令模式的详细介绍C 代码示例C代码示例2 命令模式的详细介绍 定义与概念 命令模式属于行为型设计模式,它旨在将一个请求封装成一个对象,从而让你可以用不同的请求对客户端进行参数化,将请求的发送者和接收者解耦,并且能…...
电力通信规约-104实战
电力通信规约-104实战 概述 104规约在广泛应用于电力系统远动过程中,主要用来进行数据传输和转发,本文将结合实际开发实例来讲解104规约的真实使用情况。 实例讲解 因为个人技术栈是Java,所以本篇将采用Java实例来进行讲解。首先我们搭建一…...
什么是事务
在数据库管理系统中,事务(Transaction)是执行一系列操作的最小工作单元,这些操作要么全部成功,要么全部失败。为了确保数据的一致性和完整性,事务被设计为具备四大特性,即原子性(Ato…...
数据结构:双向循坏链表
目录 1.1双向循环链表的结构 2.双向链表功能的实现 2.1初始化链表 2.2销毁链表 2.3创建结点 2.4打印链表 2.5链表查找 2.6链表在pos的前面进行插入 2.7链表删除pos位置的节点 2.8链表的头插,头删 ,尾插,尾删 1.1双向循环链表的结构 …...
3.1、SDH的5种标准容器
1、定义与作用 在 SDH(同步数字体系)中,标准容器(C)是一种用来装载各种速率的 PDH(准同步数字系列)信号的信息结构。它的主要作用是进行速率适配,使不同速率的 PDH 信号能够在 SDH 的…...
Jenkins介绍
Jenkins 是一款流行的开源自动化服务器,在软件开发和持续集成 / 持续交付(CI/CD)流程中发挥着关键作用。 一、主要功能 1.持续集成(CI) (1).自动构建:Jenkins 可以配置为监听代码仓…...
OpenClaw量化对比:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF不同精度版本的自动化任务表现
OpenClaw量化对比:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF不同精度版本的自动化任务表现 1. 测试背景与实验设计 去年在开发一个自动化文档处理流程时,我发现OpenClaw的任务成功率与底层模型量化精度密切相关。当时使用Q8版本处理Excel文…...
用MATLAB复现高斯光束通过双透镜系统:从ABCD矩阵到可视化光斑演变
用MATLAB复现高斯光束通过双透镜系统:从ABCD矩阵到可视化光斑演变 在光学工程和激光技术领域,理解高斯光束在复杂光学系统中的传输特性至关重要。本文将带您一步步实现高斯光束通过双透镜系统的完整MATLAB仿真,从ABCD矩阵理论推导到动态光斑演…...
FedMeta: Accelerating Federated Learning with Meta-Learning for Enhanced Privacy and Efficiency
1. FedMeta:当联邦学习遇上元学习 想象一下,你正在训练一个能识别手写数字的AI模型,但数据分散在成千上万个用户的手机里。传统联邦学习就像让每个用户都从头开始训练完整模型,既耗流量又费时间。而FedMeta的聪明之处在于——它让…...
AtlasOS系统性能优化指南:从诊断到维护的全流程解决方案
AtlasOS系统性能优化指南:从诊断到维护的全流程解决方案 【免费下载链接】Atlas 🚀 An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atl…...
如何通过LibreHardwareMonitor实现高效全面的硬件监控:实用指南
如何通过LibreHardwareMonitor实现高效全面的硬件监控:实用指南 【免费下载链接】LibreHardwareMonitor Libre Hardware Monitor, home of the fork of Open Hardware Monitor 项目地址: https://gitcode.com/GitHub_Trending/li/LibreHardwareMonitor Libre…...
基于智能体(Agent)的自动化图像工作流:Wan2.2-I2V-A14B与任务编排
基于智能体(Agent)的自动化图像工作流:Wan2.2-I2V-A14B与任务编排 1. 引言:当图像生成遇上智能体 想象一下这样的场景:你需要为电商平台制作一组节日主题的广告图,包含特定风格的背景、商品展示和人物互动…...
全桥LLC变换器死区时间优化实战:从IGBT硬开通到完美ZVS的调试记录
全桥LLC变换器死区时间优化实战:从IGBT硬开通到完美ZVS的调试记录 在电力电子领域,LLC谐振变换器因其高效率、高功率密度和良好的EMI特性,已成为中高功率应用的理想选择。然而,实际调试过程中,死区时间与励磁电感的匹配…...
【CPython内存管理白皮书级解析】:从PyObject到ob_refcnt,看懂泄漏发生的底层5层机制
第一章:CPython内存管理的底层基石与泄漏本质CPython 的内存管理并非依赖操作系统级 malloc/free 的直接映射,而是构建在三层抽象之上的精密系统:最底层为系统内存分配器(如 mmap 或 malloc),中间层为 CPyt…...
如何用WechatFerry构建企业级微信自动化解决方案
如何用WechatFerry构建企业级微信自动化解决方案 【免费下载链接】wechatferry 基于 WechatFerry 的微信机器人底层框架 项目地址: https://gitcode.com/gh_mirrors/wec/wechatferry 一、场景化价值:从业务痛点到自动化突破 在数字化转型加速的今天…...
Pixel Fashion Atelier基础教程:硬核8-Bit界面操作逻辑与非对称布局解析
Pixel Fashion Atelier基础教程:硬核8-Bit界面操作逻辑与非对称布局解析 1. 像素时装锻造坊简介 Pixel Fashion Atelier是一款基于Stable Diffusion与Anything-v5的图像生成工具,它彻底改变了传统AI工具的界面设计理念。这款工具将复古日系RPG的"…...
