3D数据大屏实现过程,使用echarts、Next.js

📜 本文主要内容

  • 数据大屏自适应方案
  • 动效 echarts:
    • 3D 立体柱状图
    • 动态流光折线图
  • 3D 地球(飞线、柱状图)
  • 无限滚动列表

🔍 大屏效果

数据大屏: 点击预览

请添加图片描述

🕹 运行条件

  • next 12.3.4
  • echarts 5.4.3
  • earth-flyline 1.5.4

数据大屏自适应方案

开发前在网上进行相关了解以后,目前主要有 vw vh、rem、scale 这三种方案 👇

方案实现方式优点缺点
vw vh1.按照设计稿尺寸,将 px 按比例计算转换成 vw,vh1.可以动态计算图表高度,字体等,灵活性较高
2.当屏幕比例跟 ui 稿不一致时,不会出现两边留白情况
1.每个图表都需要单独做字体、间距、位移的适配,比较麻烦
scale1.通过 scale 属性,根据屏幕大小,对图表进行整体的等比缩放1.代码量少,适配简单
2.一次处理后不需要在各个图表 中再去单独适配
1.因为是根据 ui 稿等比缩放,当大屏跟 ui 稿的比例不一样时,会出现周边留白情况
2.当缩放比例过大时候,字体会有一点点模糊,就一点点
3.当缩放比例过大时候,事件热区会偏移。
rem + vw vh1.获得 rem 的基准值
2.动态的计算 html 根元素的 font-size
3.图表中通过 vw vh 动态计算字体、间距、位移等 适配
1.布局的自适应代码量少,适配简单1.因为是根据 ui 稿等比缩放,当大屏跟 ui 稿的比例不一样时,会出现周边留白情况
2.图表需要单个做字体、间距、位移的适配
  • 如果想简单,客户能同意留白,选用 scale 即可
  • 如果需要兼容不同比例的大屏,并且想在不同比例中都有比较好的效果,图表占满屏幕,类似于移动端的响应式,可以采用 vw vh 的方案
  • 至于 rem,个人觉得就是 scale 和 vw vh 的综合,最终的效果跟 scale 差不多

总的来说,每个方案都各有取舍,根据不同的使用场景可以采取不同的方案,案例中的dashboard采用的是 scale 方案,不过可以根据需求自定义

📖 代码实现
/*JS部分*///数据大屏自适应函数const handleScreenAuto = () => {const designDraftWidth = 1920;//设计稿的宽度const designDraftHeight = 960;//设计稿的高度//根据屏幕的变化适配的比例const scale = document.documentElement.clientWidth / document.documentElement.clientHeight < designDraftWidth / designDraftHeight ?(document.documentElement.clientWidth / designDraftWidth) :(document.documentElement.clientHeight / designDraftHeight);//缩放比例(document.querySelector('#screen') as any).style.transform = `scale(${scale}) translate(-50%)`;}//React的生命周期 如果你是vue可以放到mountd或created中useEffect(() => {//初始化自适应  ----在刚显示的时候就开始适配一次handleScreenAuto();//绑定自适应函数   ---防止浏览器栏变化后不再适配window.onresize = () => handleScreenAuto();//退出大屏后自适应消失   ---这是react的组件销毁生命周期,如果你是vue则写在deleted中。最好在退出大屏的时候接触自适应return () => window.onresize = null;}, [])
    /*HTML部分*/  <div className="screen-wrapper"><div className="screen" id="screen"></div></div>
    /*CSS部分  --除了设计稿的宽高是根据您自己的设计稿决定以外,其他复制粘贴就完事*/  .screen-root {height: 100%;width: 100%;.screen {display: inline-block;width: 1920px;  //设计稿的宽度height: 960px;  //设计稿的高度transform-origin: 0 0;position: absolute;left: 50%;}}

动效 echarts 动态流光折线图

效果如下

请添加图片描述

使用echarts 构建带流动光效的折线图,实现代码可以参考另一篇文章,写得比较详细。

基于echarts的带流动光效的折线图

动效 echarts 3D柱状图

效果如下

请添加图片描述

使用echarts 构建3D立体柱状图,实现代码可以参考另一篇文章,写得比较详细。

echarts实现3d柱状图)

3D 地球(飞线、柱状图)

效果如下
请添加图片描述

earth-flyline 基于threejs 封装的3D可视化地球组件,开箱即用。

  1. 支持GeoJSON 格式的数据渲染地图

  2. 支持2D平面地图和3D地球渲染

  3. 支持地图区域配色,边界线配色,地球配色,鼠标滚轮放大缩小,区域高亮

  4. 支持飞线、涟漪的颜色配置和增删操作。

  5. 支持鼠标交互事件

使用

npm i earth-flyline

import earthFlyLine from "earth-flyline";
//请先下载geojson格式的地图文件(可去第三方下载) 然后注册地图,也可以在我的项目src/map路径下查找并下载
//也可通过贴图方式实现,具体详情参考文档说明
import geojson from 'xxx/path/world.json'
earthFlyLine.registerMap("world", geojson);
//获取dom节点作为容器 注:该节点请设置宽高
const dom = document.getElementById("container");
const chart = earthFlyLine.init({dom,map: "world",});

参考资料:
scale 方案参考: 数据大屏最简单自适应方案,无需适配rem单位
GlobeStream3D: 基于Threejs封装的3D地球

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebRover :一个功能强大的 Python 库,用于从 Web 内容生成高质量的数据集,专为训练大型语言模型和 AI 应用程序而设计。

2024-11-30 &#xff0c;由Area-25团队开发的一个专门用于生成高质量网络内容数据集的Python库。该数据集旨在为大型语言模型&#xff08;LLM&#xff09;和人工智能应用的训练提供丰富的数据资源。 数据集地址&#xff1a;WebRover Dataset|自然语言处理数据集|AI模型训练数据…

FlyHttp 的最佳实践:加速项目级 API 请求构建

FlyHttp的相关文章&#xff1a; FlyHttp 的诞生&#xff1a;从认识各种网络请求开始 FlyHttp 的设计思想&#xff1a;前端 API 自动化构建工具 FlyHttp 的使用&#xff1a;如何高效使用 FlyHttp&#xff0c;支持 JS、TS 项目 一. FlyHttp 是什么&#xff1f; 这是一个自动…

图像修复算法常用评估指标介绍及Python代码(PSNR/SSIM/FID)

目录 峰值信噪比PSNR&#xff08;Peak Signal-to-Noise Ratio&#xff09; 结构相似度SSlM&#xff08;Structural Similarity Index Measurement&#xff09; FID&#xff08;Frchet Inception Distance&#xff09; 代码实践&#xff1a;计算两张图片之间的PSNR和SSIM 代…

家庭财务管理系统的设计与实现ssm小程序+论文源码调试讲解

2系统关键技术 2.1 微信小程序 微信小程序&#xff0c;简称小程序&#xff0c;英文名Mini Program&#xff0c;是一种全新的连接用户与服务的方式&#xff0c;可以快速访问、快速传播&#xff0c;并具有良好的使用体验。 小程序的主要开发语言是JavaScript&#xff0c;它与普…

天润融通亮相CCFA论坛:AI Agent引领零售业服务精细化运营

在新时期实现零售的进化&#xff0c;AI Agent助力客户精细化运营 11月19-21日&#xff0c;CCFA新消费论坛——2024中国零售创新大会在上海召开。大会围绕“在新时期实现零售的进化”主题&#xff0c;通过探讨零售新趋势、新势力、新模式&#xff0c;聚焦新产品、新渠道、新生活…

医学临床机器学习中算法公平性与偏差控制简析

摘要 随着医疗领域中数据的不断积累和计算能力的提升&#xff0c;临床机器学习技术发展迅速&#xff0c;但算法不公平性和偏差问题凸显。本文深入探讨了临床机器学习算法公平性的重要性、概念与定义、在临床应用中的影响、偏差来源、降低偏差方法及提升公平性策略。通过对不同…

如何抓取亚马逊页面动态加载的内容:Python爬虫实践指南

引言 在现代电商领域&#xff0c;数据的重要性不言而喻。亚马逊作为全球领先的电商平台&#xff0c;其页面上动态加载的内容包含了丰富的商品信息。然而&#xff0c;传统的爬虫技术往往难以应对JavaScript动态加载的内容。本文将详细介绍如何使用Python结合Selenium工具来抓取…

MongoDB分片集群架构实战

分片集群架构 分片简介 分片&#xff08;shard&#xff09;是指在将数据进行水平切分之后&#xff0c;将其存储到多个不同的服务器节点上的一种扩展方式。分片在概念上非常类似于应用开发中的“水平分表”。不同的点在于&#xff0c;MongoDB本身就自带了分片管理的能力&#…

opencvocr识别手机摄像头拍摄的指定区域文字,文字符合规则就语音报警

安装python&#xff0c;pycharm&#xff0c;自行安装。 Python下安装OpenCv 2.1 打开cmd,先安装opencv-python pip install opencv-python --user -i https://pypi.tuna.tsinghua.edu.cn/simple2.2 再安装opencv-contrib-python pip install opencv-contrib-python --user …

[报错] Error: PostCSS plugin autoprefixer requires PostCSS 8 问题解决办法

报错&#xff1a;Error: PostCSS plugin autoprefixer requires PostCSS 8 原因&#xff1a;autoprefixer版本过高 解决方案&#xff1a; 降低autoprefixer版本 执行&#xff1a;npm i postcss-loader autoprefixer8.0.0 参考&#xff1a; Error: PostCSS plugin autoprefix…

Go学习:编译器(编写程序时应该注意的点)

一、注意&#xff1a; LiteIDE工具&#xff1a; &#xff08;1&#xff09;创建项目后&#xff0c;同一个目录下的go文件 只能有一个 main函数&#xff0c;如果多个文件都有main函数&#xff0c;会出现编译错误。例如&#xff1a; &#xff08;2&#xff09;如果一个目录下多…

自然语言处理期末试题汇总

建议自己做&#xff0c;写完再来对答案。答案可能存在极小部分错误&#xff0c;不保证一定正确。 一、选择题 1-10、C A D B D B C D A A 11-20、A A A C A B D B B A 21-30、B C C D D A C A C B 31-40、B B B C D A B B A A 41-50、B D B C A B B B B C 51-60、A D D …

市场爆火的“生成式AI大模型”证书如何报考?

随着科技的飞速发展&#xff0c;生成式人工智能正以前所未有的速度渗透到各行各业。从创作艺术、生成音乐到推动虚拟世界的构建&#xff0c;这项技术以其卓越的创新能力改变了传统的生产和创意模式。生成式人工智能不仅仅是数据的复制和再现&#xff0c;而是通过算法实现内容的…

Electron-vue 框架升级 Babel7 并支持electron-preload webapck 4 打包过程记录

前言 我这边一直用的electron-vue框架是基于electron 21版本的&#xff0c;electron 29版本追加了很多新功能&#xff0c;但是这些新功能对开发者不友好&#xff0c;对electron构建出来的软件&#xff0c;使用者更安全&#xff0c;所以&#xff0c;我暂时不想研究electron 29版…

浏览器渲染流程

1.渲染模式 标准模式和怪异模式&#xff08;Quirks Mode&#xff09;是两种不同的文档渲染模式&#xff0c;用于指示浏览器如何解析HTML、CSS等页面内容。标准模式是指浏览器按照W3C规范的流程进行解析和渲染网页&#xff0c;这样可以确保不同浏览器对同一份代码的渲染结果基本…

ElementUI 问题清单

1、form 下面只有一个 input 时回车键刷新页面 原因是触发了表单默认的提交行为&#xff0c;给el-form 加上submit.native.prevent就行了。 <el-form inline submit.native.prevent><el-form-item label"订单号"><el-inputv-model"query.order…

ArcGIS求取多个点距离线要素的最近距离以及距离倒数

本文介绍在ArcMap软件中&#xff0c;对于点要素中的每一个点&#xff0c;求取其距离最近的道路的距离、距离倒数的方法。 首先&#xff0c;看一下本文的需求。现在已知一个点要素&#xff0c;其中含有多个点&#xff0c;假设每一个点表示城市中的一家商店&#xff1b;同时&…

【数据库系列】Spring Boot如何配置Flyway的回调函数

Flyway 提供了回调机制&#xff0c;使您能够在特定的数据库迁移事件发生时执行自定义逻辑。通过实现 Flyway 的回调接口&#xff0c;可以在迁移前后执行操作&#xff0c;如记录日志、执行额外的 SQL 语句等。 1. 创建自定义回调类 要配置 Flyway 的回调函数&#xff0c;需要创…

网络安全(1)_对称加密和非对称加密

1 网络安全概述 1.1 计算机网络面临的安全威协 &#xff08;1&#xff09;截获&#xff1a;攻击者从网络上窃听他人的通信内容&#xff0c;通常把这类攻击称为“截获”。在被动攻击中&#xff0c;攻击者只是观察和分析某一个协议数据单元&#xff08;PDU&#xff09;而不干扰信…

【查询基础】.NET开源 ORM 框架 SqlSugar 系列

&#x1f4a5; .NET开源 ORM 框架 SqlSugar 系列 &#x1f389;&#x1f389;&#x1f389; 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列…