当前位置: 首页 > Web前端 > HTML

前端er必须掌握的数据可视化技术

时间:2023-03-29 12:41:44 HTML

一月份又要结束了,工人们准时的汇报工作将如期与大家见面。说到报告,一个必不可少的部分就是对数据的总结和分析。作为一个合格的社会人,我们每天在工作、生活、学习中都与数字打交道。从小的量化工作内容到大的具体工作指标,车间生产、批发和零售行业都充斥着大量的数据。互联网诞生后,网络将我们紧密地联系在一起,让数据更集约地汇聚。好远啊……眼下,正在写月报的葡萄,面对着来自后端的铺天盖地的两万条数据。这个数据有用吗?它有效,但不完全。毕竟我们在做报告的时候,总不能直接把两万条数据扔到领导面前,让他自己想办法看吧。这个时候如果领导说,咱们看看哪个省的销售额最多,我们岂不是当场蒙了眼。但是如果变成这样一张图:可以很明显的看到各个省份之间的销量差距。有了这张图,我们就可以秒回领先:浙江省、天津市、江西省销量位居前三。而领导可以拍下这张照片,满意地向自家领导汇报。这样的数据处理过程称为“数据可视化”,使我们能够处理和处理数据。对于一个优秀的前端,我们更关注如何实现数据可视化。涉及的知识其实很多,包括数据源集成、数据抽取、数据清洗、数据建模、数据可视化等等。本文主要给前端领域的大家介绍一下,我们作为前端开发需要掌握哪些可视化技术,以帮助我们更好的实现数据可视化。一、基本开发技术1、SVGSVG是一种XML语言,类似于XHTML,可以用来绘制矢量图形。SVG可以通过定义必要的线条和形状来创建图形,修改现有的位图,或者结合这两种方法来创建图形。这是来自MDN的示例:SVG绘制矩形(rect标签)、圆(circle标签)和文字(text标签).一般如果画布比较大,有缩放和平移等高频交互场景,以及常见的饼图、直方图、流程图的开发,可以考虑使用SVG。SVG的具体使用教程,可以移步文档:https://developer.mozilla.org...2.CanvasCanvasAPI提供了一种通过JavaScript和HTML元素绘制图形的方法。可用于动画、游戏画面、数据可视化、图像编辑、实时视频处理等领域。Canvas绘制的图形不会出现在DOM结构中。一般画布小,数据量大的场景适合用Canvas,性能更好。下面是一个简单的例子:HTML部分:JavaScript代码部分:constcanvas=document.getElementById('canvas');constctx=canvas.getContext('2d');ctx.fillStyle='绿色';ctx.fillRect(10,10,150,100);关于Canvas的具体使用教程,可以移步文档:https://developer.mozilla.org...3.WebGLWebGL使其支持HTML在带有canvas标签的浏览器中,可以使用基于OpenGLES2.0的APIs无需安装任何插件即可在画布中进行2D和3D渲染。如果你有一些3D渲染的需求,可以使用webGL的方案。特别是3D地图和3D地球仪的绘制,需要用到webGL技术。webGL是一种基于Canvas的绘图技术。要使用webGL进行3D渲染,首先要在页面上创建一个canvas元素,并通过这个canvas元素初始化WebGL上下文。详情可移步文档使用和学习:https://developer.mozilla.org...二、可视化组件及工具1、ZRenderZRender是一个轻量级的Canvas类库和二维绘图引擎。它提供了Canvas、SVG、VML多种渲染方式,并提供了类Dom的事件模型。同时ZRender也是ECharts的渲染器。ZRender的使用并不复杂,我们需要引入相应的JavaScript文件,使用它提供的API初始化一个Dom容器,在这个容器中绘制你需要的图形。下面是一个创建圆心为[150,50]且半径为40的圆的简单示例:varcircle=newzrender.Circle({shape:{cx:150,cy:50,r:40},样式:{填充:'无',描边:'#F00'}});zr.add(圆圈);更多图形的绘制方法请参考ZRender官方文档https://ecomfe.github.io/zren..此处不再赘述。2、如果Echarts需要做可视化的工作,那么你必须熟悉Echarts。Echarts是百度开源的javascript可视化库。它可以在PC和移动设备上流畅运行。它与大多数当前浏览器兼容。底层依赖矢量图形库ZRender提供直观、交互和高度可定制的数据可视化。图表。同时Echarts也比较容易学习和使用,通过几个简单的选项配置项就可以快速绘制出一张图表。比如一个折线图只需要十几行配置:option={xAxis:{type:'category',data:['Mon','Tue','Wed','Thu','Fri','Sat','Sun']},yAxis:{type:'value'},series:[{data:[150,230,224,218,135,147,260],type:'line'}]};除了2D图表,echarts还提供了Echarts-gl,可以显示3D图表和地球,这在其他开源库中基本没有。虽然2D图形也可以实现仿3D效果,但只有Echarts-gl是基于WebGL的真3D,可以配置光照、材质、阴影,以及专属的后期特效等功能。Echarts的更多配置和使用,可以移步Echarts文档:https://echarts.apache.org/zh...除了Echarts官方提供的资源外,资源社区GalleryofEcharts才是真正主要的力量。本社区有非常丰富的图表资源,都是个人用户上传的,还可以筛选查询。这些图表基本可以满足大部分应用场景。3.AntVAntV是一个数据可视化项目和一个团队,即蚂蚁集团的数据可视化团队。AntV目前覆盖了统计图表、移动图表、图形可视化、地理可视化、2D绘图引擎、智能可视化等多个领域,主要包括G2栈、F2栈、G6栈、X6栈、L7栈、AVA及全套图表使用和设计指南。其中,G2主要致力于通用图表库,使用更简化的语法构建各种交互式统计图表。F2是一款专注于移动端、开箱即用的可视化解决方案,完美支持H5环境,兼容多种环境(node、applet、weex等)。L7是一个开源的基于WebGL的大规模地理空间数据可视化分析开发框架。AntV各种图表的使用,可以到官网查询:https://antv.vision/zh4,WynEnterpriseWynEnterprise是一款强大的嵌入式数据可视化工具,提供灵活的数据交互和探索分析能力.并且OEM白标集成的方式充分满足了行业应用软件的数据分析需求。具备多源数据整合、报表设计、数据可视化、自助BI分析、数据报表等功能,帮助用户挖掘数据的潜在价值,为管理者决策提供数据支持。https://www.grapecity.com.cn/...5.D3D3.js库是一个开源项目,作者是纽约时报工程师。准确的说,D3.js其实是一个JavaScript函数库,而不是图表库,更适合数据可视化。D3有丰富的数学函数来处理数据转换和物理计算,并且可以将数据映射到HTML结构或SVG文档。这个特性可以让我们更方便的操作DOM来绘制图表。可以说是“可视化界的jQuery”,因为D3的api和jQuery非常相似,可以看下面的例子:d3.select('#chart').selectAll("div").data([4,16,23,42]).enter().append("div").style("height",(d)=>d+"px")如果只是想画普通图表,没有需要直接使用D3的,可以看一下那些基于D3的图表库,比如Ploty.js、nivo等。d3的GitHub项目地址贴在这里:https://github.com/d3/d36。Vega使用Vega时不需要编写前端代码。只用JSON就可以完成所有图表相关的开发,包括数据加载、Transformation、交互等。由于Vega致力于通过一些JSON配置项来绘制图表,因此在生成一些基础的、简单的图表时也需要多行配置。例如,最简单的直方图需要95行配置,因此它提供了更简洁的语法Vega-Lite,用于快速生成可视化以支持分析。下面是一个柱状图的例子:这里我贴出vega-lite的官网供大家学习:https://vega.github.io/vega-l...3.结论这里介绍几个比较流行的可视化技术或画廊,所有这些都可以免费使用。当然,市面上也有一些商业图表库,比如HighCharts、AnyChart、WynEnterprise、FusionCharts等,有兴趣的可以自己了解一下。