d3与echarts的区别
1. 目前各大公司的大数据平台多使用d3还是echarts?什么时候适合用echarts,什么时候适合用d3?
在我看几种数据可视化平台多使用折线图,面积图和柱状图,条图居多,对于echarts和d3都有使用。 对于使用d3还是echarts还得从用户需求,计算数据的量的大小来进行分析:
(1) 对于客户需求要求的图表拥有大量的用户交互场景,用d3比较方便,因为d3中svg画图支持事件处理器,他是基于dom进行操作的。想要实现某个操作,直接调用相关的方法实现效果就行,他那个里面存在链式语法,这个和jQuery的链式调用差不多,简单易读。
(2) 对于大量的数据展示并且对于用户交互场景没什么要求,就只是展示数据,那我建议使用echarts,如果使用d3的话展示的每一个数据都是一个标签,那么当数据发生改变的时候这时候图表会重新渲染,会不停的操作dom,操作dom是很耗费性能的。
(3) 从兼容性方面考虑:echarts兼容到IE6及以上的所有主流浏览器,而d3兼容IE9及以上以及所有的主流浏览器,如果项目考虑兼容IE6,建议使用echarts。
2. D3和echarts的区别?
D3:
太底层,学习成本大
兼容到IE9以上以及所有的主流浏览器
D3通过svg来绘制图形
可以自定义事件
Svg:
不依赖分辨率
基于xml绘制图形,可以操作dom
支持事件处理器
复杂度高,会减慢页面的渲染速度
Echarts:
封装好的方法直接调用
兼容到ie6以及以上的所有主流浏览器
echarts通过canvas来绘制图形
封装好的,直接用,不能修改
Canvas:
依赖分辨率
基于js绘制图形
不支持事件处理器
能以png或者jpg的格式保存图片
3. 一般的交互都用在哪些方面上?
一般的数据交互,后台返回数据,前端将数据通过图表的形式展示给用户。对于这种只是展示数据的话我比较常用的是echarts
而像一些鼠标、键盘、触屏事件操作的话,是用d3实现的。因为svg支持事件处理器
当某个事件被监听到时,d3会把当前的事件存到d3.event对象,里面保存了当前事件的各种参数。
4. 不同图表之间的对比:
柱状图(常用)
二维数据集,有一维需要比较,适合中小规模数据集,不超过12条数据
对比分类数据的数值大小
柱图用高度反映数据差异,用来展示有多少项目(频率)会落入一个具有一定特征的数据段中,比如分析公司人员构成是否存在老龄化现象,可以通过柱图看到25岁以下的员工有多少,25岁到35岁之间员工有多少等这种年龄的分布情况。同时,柱图还可以用来表示含有较少数据值的趋势变化关系。
条形图主要是用于观测进程,分类比较,柱形图按照一定的区间将数据进行分组。其操作方法基本相似
条图
条图表达比较关系,按照强调的方式可以排列任何顺序,如在零售行业中统计畅销品的销售情况就是很好的应用。它是最通用的一种图表
折线图(常用)
二维数据集,适合大量的数据展示,不注重数据的具体大小,注重在某一个时间段的数据的变化趋势
观察数据的变化趋势
关心数据如何随着时间变化而变化,每周、每月、每年的变化趋势是增长、减少、上下波动或基本不变,这时候使用线图更好地表现指标随时间呈现的趋势
面积图(常用)
二维数据集
在折线图的基础上,进行运用
与折线图较为类似,面积图强调变量随时间而变化的程度,也可用于引起人们对总值趋势的注意。用填充了颜色或图案的面积来显示数据,面积片数不宜超过5片
饼图(常用)
对比分类数据的占比情况
构成比例关系时,最好使用饼图
如果你想表达的信息包括:“份额”、“百分比”以及“预计将达到百分之多少”,这时候可以用到饼图。为了使饼图尽量发挥作用,在使用中不宜多于6种成分。
气泡图(少用)
三维数据集
通过每个点的面积大小,以及位置坐标来展示信息
比如展示某一个具体的地点风的强度,有三个维度:精度,维度和风的强度,风的强度用圆的面积大小表示,圆越大,代表风的强度越大,但是人一般不善于判断面积,那么这个就适用于那些对于其中有一维辨识度没有那么高的三维数据的展示,但是具体的用的地方比较少,平时很少用
雷达图(平时用的不多)
多维数据集,四维以上,但是数据点有限(<=6),所以他的适用场景也有限,平时用的也少
雷达图可以用来表现一个周期数值的变化,也可以用来表现特定对象主要参数的相对关系。
雷达图多用于在财务分析中,用来分析企业负债能力、运营能力、盈利和发展能力等指标。
在使用方面:
Echarts里面的方法封装比较好,用的时候直接调用就能实现效果,
对于echarts的使用比较简单,引入echarts.js,然后就可以通过 echarts.init 方法初始化一个 echarts 实例并通过 setOption 方法设置图表实例的配置项以及数据,万能接口,所有参数和数据的修改都可以通过setOption完成,ECharts 会合并新的参数和数据,然后刷新图表。如果开启动画的话,ECharts 找到两组数据之间的差异然后通过合适的动画去表现数据的变化
而d3需要自己添加画布,绘制图形,绘制的每一个图形都为一个对象,可以添加相应的事件操作,操作dom
d3与echarts的区别的更多相关文章
- 金三银四,磨砺锋芒;剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)上
金三银四,磨砺锋芒:剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)上 引言 元旦匆匆而过,2020年的春节又接踵而来,大家除了忙的提着裤子加班.年底冲冲冲外,还有着对于明年的迷茫和期待! ...
- 百度Echarts,蚂蚁金服G2,D3三种主流可视化工具对比
1.百度的Echarts 官网:https://echarts.baidu.com/ 介绍:ECharts,缩写来自Enterprise Charts,是百度推出的一款开源的,商业级数据图表,它最初是 ...
- R语言学习笔记︱Echarts与R的可视化包——地区地图
笔者寄语:感谢CDA DSC训练营周末上完课,常老师.曾柯老师加了小课,讲了echart与R结合的函数包recharts的一些基本用法.通过对比谢益辉老师GitHub的说明文档,曾柯老师极大地简化了一 ...
- d3.js入门学习
个人感觉前端数据可视化是个趋势,并且现在所在公司也是有做这块的项目,虽然我目前还没有接触到公司数据可视化的项目,但是,今后总是要接触的嘛. 今天看了一下公司目前所用的两种数据可视化工具---D3和EC ...
- 实现node端渲染图表的简单方案
实现node端渲染图表的简单方案 这个题目有点小,本篇博客真正谈论的应该是服务端生成图表的简单方案,这里面有两个关键字:服务端 & 简单,我们知道基于js有很多的图表库,知名的如D3.echa ...
- 知道创宇研发技能表v3.1
by @知道创宇(www.knownsec.com) @余弦 & 404团队 后续动态请关注微信公众号:Lazy-Thought 说明 关于知道创宇 知行合一 | 守正出奇 知道创宇是一家黑客 ...
- 知道创宇研发技能表v3.0
知道创宇研发技能表v3.0 2015/8/21 发布 by @知道创宇(www.knownsec.com) @余弦 & 404团队 后续动态请关注微信公众号:Lazy-Thought 说明 关 ...
- 从零开始学数据分析,什么程度可以找到工作?( 内附20G、5000分钟数据分析工具教程大合集 )
从零开始学数据分析,什么程度可以找到工作?( 内附20G.5000分钟数据分析工具教程大合集 ) 我现在在Coursera上面学data science 中的R programming,过去很少接 ...
- Big Data架构师技能图谱
大数据通用处理平台 Spark Flink Hadoop 分布式存储 HDFS 资源调度 Yarn Mesos 机器学习工具 Mahout Spark Mlib TensorFlow (Google ...
随机推荐
- 51nod1790 输出二进制数
题目描述 题解 过于真实 LJ卡常题 一个显然的dp: 设f[i][j]表示做完前i个,最后一段为j+1~i的方案(最小值同理) 那么f[i][j]=min(f[i-j-1][k]),其中k~j-1要 ...
- js 遍历数组取出字符串用逗号拼接
var arr = [{"name":"hhh"},{"name":"dddd"}] //用js function ge ...
- es6 语法使用
一.相关背景介绍 我们现在大多数人用的语法javascript 其实版本是ecmscript5,也是就es5.这个版本己经很多年了,且完美被各大浏览器所支持.所以很多学js的朋友可以一直分不清楚es5 ...
- go语言实战 摘抄
append 函数append会智能地处理底层数组的容量增长.在切片的容量小于1000个元素时,总是会成倍地增加容量.一旦元素个数超过1000,容量的增长因子就会设为1.25, 也就是每次增加25%的 ...
- 设计模式学习笔记——Visitor 访问者模式
1.定义IVisitor接口,确定变化所涉及的方法 2.封装变化类.实现IVisitor接口 3.在实体类的变化方法中传入IVisitor接口,由接口确定使用哪一种变化来实现(封装变化) 4.在使用时 ...
- SpringMVC开发中遇到的异常1:No primary or default constructor found for interface java.util.List
Request processing failed; nested exception is java.lang.IllegalStateException: No primary or defaul ...
- React Native商城项目实战16 - 购物中心详细页
逻辑分析: 首页(Home)加载的购物中心组件(ShopCenter),传递url数据: ShopCenter里根据url加载购物中心详细页组件(ShopCenterDetail), ShopCent ...
- 最新版本的MySQL的下载和安装(Release: 8.0.12)
1.打开百度搜索[Myql],或直达官网https://dev.mysql.com/ 2.点选[Download按钮],跳转到下载页面,拉到底部再点选[Community Download]社区版[免 ...
- Linux内核调试方法总结之栈帧
栈帧 栈帧和指针可以说是C语言的精髓.栈帧是一种特殊的数据结构,在C语言函数调用时,栈帧用来保存当前函数的父一级函数的栈底指针,当前函数的局部变量以及被调用函数返回后下一条汇编指令的地址.如下图所示: ...
- (转) intellij idea部署web项目时的位置(Tomcat)
这篇文章说的比较好: 原文地址:https://blog.csdn.net/zmx729618/article/details/78340566 1.当你项目启动的时候console能看到项目运行的位 ...