d3.js入门学习
个人感觉前端数据可视化是个趋势,并且现在所在公司也是有做这块的项目,虽然我目前还没有接触到公司数据可视化的项目,但是,今后总是要接触的嘛。
今天看了一下公司目前所用的两种数据可视化工具---D3和ECharts,ECharts由于是国产的,文档和demo都很全,简单看了一下,感觉很好上手,没有必要把太多时间花在ECharts上,反观D3,中文文档很匮乏,api讲得也不是很易于理解,但是D3很火啊,功能很强大啊,所以,我决定开始学习D3。
通过查询,大概知道了D3就是通过js来操作DOM,包括但不仅限于创建节点、节点绑定数据,所以D3大概就是将源生js操作DOM的方法做了封装,并且借助H5的svg标签来绘制图形;
说到H5的图形绘制,有svg和canvas;svg是矢量图,放大不失真,canvas是位图,放大失真,但是canvas更适合做游戏开发,说到游戏开发就不得不说js游戏引擎了,听说白鹭引擎挺不错~咳咳,跑题了。下面开始记录D3相关API的使用(图文教程,你值得拥有,如果有不对的地方也欢迎提出)
一、为项目引入D3
我这里是直接在vue项目中引入d3的,项目目录下:npm i d3
随便打开一个文件(.vue),切记,这里在main.js里import是无效的,要到用到D3的组件/页面l里import D3,如下:
import * as d3 from 'd3';
二、开始表演
正如你所看到的的那样,当前页面有一个类名为skill的div,里面有两个空白的p标签,接下来,我要通过D3为其导入数据:
稍微有点js基础的都就能看出这句话的意思,只不过这块有两个知识点需要提一下:
①链式语法,原理就是每个方法执行结束之后返回特定对象或者this对象(具体可查阅java23种设计模式)
②这里的init()数据初始化操作要放在Vue实例的mounted生命周期,created生命周期亲测无效(具体参考vue生命周期)
三、检查结果
ok,就这样,D3已经在vue项目中成功运行,更多d3相关,敬请期待我后续博客!
d3.js入门学习的更多相关文章
- D3.js 入门学习(一)
一.安装D3.js 1.网络连接 <script src="https://d3js.org/d3.v4.min.js"></script> 2.命令行安装 ...
- D3.js 入门学习(二) V4的改动
//d3.scan /* 新的d3.scan方法对数组进行线性扫描,并根据指定的比较函数返回至少一个元素的索引. 这个方法有点类似于d3.min和d3.max. 而d3.scan可以得到极值的索引而不 ...
- D3.js 入门教程
最近需要用到d3, 记录下d3的教程 网上搜了几个关于d3的教程 D3.js 入门教程 http://wiki.jikexueyuan.com/project/d3wiki/author.h ...
- d3.js 入门指南
说到数据可视化,我们会行到很多优秀的框架,像echarts.highcharts,这些框架很优雅,健壮,能满足我们对可视化的大部分需求,但是缺点也很明显,就是这些框架几乎是不可定制化的,当遇到特殊的需 ...
- d3.js 入门指南 - 仪表盘
D3的全称是Data-Driven Documents(数据驱动的文档),是一个用来做数据可视化的JavaScript函数库,而JavaScript文件的后缀通常为.js,所以D3被称为D3.js. ...
- 【 D3.js 入门系列 — 1 】 第一个程序 HelloWorld
记得以前刚上大一学 C 语言的时候,写的第一个程序就是在控制台上输出 HelloWorld .当时很纳闷,为什么要输出这个.老师解释说所有学编程入门的第一个程序都是在屏幕上输出 HelloWorld, ...
- 【 D3.js 入门系列 — 11 】 入门总结
D3 新专题首页 一转眼,这个入门系列已经积累了二十二篇文章之多,我想作为 D3.js 这款数据可视化工具的入门来说已经足够了.相信仅仅要看完本系列.以后全然能够在辅以查询的情况下完毕大部分可视化工作 ...
- 【 D3.js 入门系列 --- 3 】 做一个简单的图表!
前面说了几节,都是对文字进行处理,这一节中将用 D3.js 做一个简单的柱形图. 做柱形图有很多种方法,比如用 HTML 的 div 标签,或用 svg . 推荐用 SVG 来做各种图形.SVG 意为 ...
- 【 D3.js 入门系列 --- 1 】 第一个程序HelloWorld
下面开始用D3.js处理第一个简单问题,先看下面的代码: <html> <head> <meta charset="utf-8"> <ti ...
随机推荐
- C语言string.h常用函数总结
void *memcpy(void *dest, const void *src, size_t n); 从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中. ...
- STC51六中中断配置点亮一个LED
一.外部中断0.1(分别點亮一個LED) /****************************************************************************** ...
- MR案例:小文件合并SequeceFile
SequeceFile是Hadoop API提供的一种二进制文件支持.这种二进制文件直接将<key, value>对序列化到文件中.可以使用这种文件对小文件合并,即将文件名作为key,文件 ...
- PLMN和PSTN
一.PLMNPLMN公众陆地移动电话网(PLMN) public land mobile network 由政府或它所批准的经营者,为公众提供陆地移动通信业务目的而建立和经营的网路.该网路必须与公众交 ...
- MongoDB 性能优化
Read Preferences/读写分离 有时候为了考虑应用程序的性能或响应性,为了提高读取操作的吞吐率,一个常见的措施就是进行读写分离,MongoDB副本集对读写分离的支持是通过Read Pref ...
- MATLAB 图形图像处理
theme: MATLAB author: pprp date: 2018/2/2 --- MATLAB 图形图像处理 二维绘图命令 plot 线性空间 plot(t,[x1,x2,x3]) : 在同 ...
- RMQ问题 - ST表的简单应用
2017-08-26 22:25:57 writer:pprp 题意很简单,给你一串数字,问你给定区间中最大值减去给定区间中的最小值是多少? 用ST表即可实现 一开始无脑套模板,找了最大值,找了最小值 ...
- php数据库乱码
很多情况下,在本地测试是没有问题的.但是一上线,问题就增加了,主要还是代码方面不够全面.现在基本没人用php的了,权当学习 mysql_query("set names 'utf8'&quo ...
- vue2.0--vue-router路由
一.vue-router如何进行参数传递 1.name $route.name 通过在路由router/index.js中配置路由时定义的name属性来传递 ① 有一个页面components/he ...
- angular2中的路由转场动效
1.为什么有的人路由转动效离场动效不生效? 自己研究发现是加动效的位置放错了 如下: <---! animate-state.component.html --> <div sty ...