D3.js系列 --- 初识

春风化雨
• 阅读 2477

D3.js(Data-Driven Documents)即被数据驱动的文档,它是一个用于根据数据来操作文档的JavaScript库。相比于echart, antv等其他图表库,它算是一个比较底层的数据可视化工具。它不提供任何一种现成的图表,只做最基础的东西,所有的图表都需要我们在它的库里挑选合适的方法进行构建。在一切即数据的今天,我们更需要做到让数据活起来,展现数据之美。

D3.js系列 --- 初识

简介

犹抱琵琶半遮面,千呼万唤中终于要接触数据可视化了。数据可视化越来越流行,让复杂的数据和文字变得十分容易理解。作为其中的佼佼者,当然要先侃一下我们的D3了。

D3.js 是基于数据驱动文档工作方式的一款JavaScript函数库,主要用于网页作图、生成互动图形,是最流行的可视化库之一,它被很多其他的表格插件所使用。D3使你有能力借助HTML,SVG和CSS来生动地可视化各种数据。一句话,D3根据现有的web标准,将强大的可视化,动态交互和数据驱动的DOM操作方法完美结合,进而来制作炫目的可视化效果。

比较一下D3和JQuery

同是操作DOM的,就少不了被拿出来比较一下:

  • D3是数据驱动的,JQuery不是:我们使用JQuery选择器$()直接操纵元素;D3通过专有的datum(),data(),enter()和exit()方法提供数据和回调,然后操作元素
  • D3用来做数据可视化,jQuery用来创建web应用

使用

在这里下载最新的版本(5.5.0):

直接链接到最新版本:

<script src="https://d3js.org/d3.v5.min.js"></script>

NPM:

npm install d3

Yarn:

yarn add d3

浏览器支持情况

D3支持的主流浏览器不包括IE8及以前的版本。D3在Chrome、Firefox、Safari、Opera和IE9上都能正常使用。D3的大部分组件可以在旧的浏览器运行。

简单示例(实现一个简单的图表)

柱形图简明、醒目,是一种简单常用的图表,主要构成部分有矩形、坐标轴和文字说明。这个例子只绘制矩形的部分。

假设给了我们一组数据,[30, 86, 168, 281, 303, 365],根据图片我们可以直观的看出这些数据的关系

D3.js系列 --- 初识

下面就让我们一步一步的去实现它。

选择集

在jQuery中我们使用选择器$()去选择元素,在d3中我们引入一个新的名词叫做选择集。使用 d3.select() 或 d3.selectAll() 选择元素后返回的对象,就是选择集。

  • d3.select() - 从当前文档中选择一个元素
  • d3.selectAll() - 从当前文档中选择多个元素
  • selection.style() - 取得或设置样式属性

D3中我们可以像jQuery一样使用链式语法

d3.select()
  .selectAll()
  .style('color', 'red');

数据绑定

D3中我们可以把数据绑定到DOM上,它可以通过函数来实现:

  • selection.datum() - 取得或设置单个元素的数据
  • selection.data() - 取得或设置一组元素的数据

以下是一个使用说明:

var dataset = ['Beijing', 'Shanghai', 'Tianjin', 'Chongqing'];
var p = body.selectAll('p');
p.data(dataset)
.text(function(d, i) {
  return d;
});

这样就把数据绑定到了p标签上,函数function(d, i){}包含两个参数,d代表数据,这里就是与元素绑定的数据;i代表索引,从0开始

画布

要绘图,首先需要的是一块"画布"。HTML5中提供了两种强有力的"画布": SVG和Canvas。这里不多做解释。

D3提供了众多的SVG图形的生成器,我们在SVG画布中实现它。

添加画布如下:

let svg = d3.select('body')  //选择文档中的body元素
  .append('svg');     //添加一个svg元素
  

绘制矩形

绘制矩形之前我们的SVG元素里面还没有rect元素,我们就需要自己为它添加补全,需要链式使用selection.enter()和selection.append()来实现。

svg.selectAll("rect")
  .data(data)  // 绑定数据
  .enter()      // 为缺失的元素返回占位符
  .append("rect")    // 添加足够数量的矩形元素
  .attr("x",20 + 'px')     //设置矩形的x轴和y轴位置
  .attr("y",function(d,i){
    return i * 28 + 'px';
  })
  .style("width",function(d){  // 设置矩形的宽高
    return d + 'px';
  })
  .style("height",26 + 'px')
  .text(function(d) {
    return d;
  })
  

一个简单的柱形图就成功了,实现效果如下图

D3.js系列 --- 初识

点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Easter79 Easter79
3年前
sql注入
反引号是个比较特别的字符,下面记录下怎么利用0x00SQL注入反引号可利用在分隔符及注释作用,不过使用范围只于表名、数据库名、字段名、起别名这些场景,下面具体说下1)表名payload:select\from\users\whereuser\_id1limit0,1;!(https://o
Aidan075 Aidan075
4年前
这款免费插件,让Excel轻松制作酷炫图表​
大家好,我是小五🐶最近我看一篇介绍如何用Excel来制作径向树图\1\的文章,在其中学到了一个很有趣的Excel加载项。大家可能都知道D3.js吧,它是目前最流行的可视化库之一。而我要给大家介绍这款实用且免费的Excel加载项——E2D3呢,就能在Excel中轻松实现各种D3的优质图表!比如下面这些👇3D动态地图通过经纬度等数据,我们可以将
Aidan075 Aidan075
4年前
数据可视化图表使用场景大全 !
转自:大数据分析和人工智能大家好,我是小五🐶可视化图表种类如此之多,什么场景下应该用什么图表展示,是一个让人头秃的难题。数据可视化的爱好者SeverinoRibecca,他在自己的网站上收录了60种可视化图表样式以及它们分别适用于什么样的场景,并且推荐了相应的制作工具。值得一看。点阵图‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
黎明之道 黎明之道
4年前
python之利用pyecharts可视化(各种图表的绘制)
pyecharts可视化pyecharts是基于Echart图表的一个类库,而Echart是百度开源的一个可视化JavaScript库。简介:pyecharts主要基于web浏览器进行显示,绘制的图形比较
Johnny21 Johnny21
4年前
Prometheus学习系列(三)之监控对比
一、Prometheusvs.Graphite1.1范围Graphite专注于查询语言和图表特征的时间序列数据库。其他都需要依赖外部组件实现。Prometheus是一个基于时间序列数据的完整监控系统和趋势系统,包括内置和主动抓取、存储、查询、图表展示和报警功能。它懂得监控系统和趋势系统应该是什么
可莉 可莉
3年前
10款强大的开源 Javascript 图表库
1、EChartsECharts由百度前端技术部开发的,是一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11、Chrome、Firefox、Safari等),底层依赖轻量级的Canvas类库ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。
Stella981 Stella981
3年前
DataGear 轻松制作支持图表联动的全国地图、省级地图数据可视化看板
DataGear(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.datagear.tech)看板的图表联动功能,使您可以轻松制作支持图表联动的全国地图、省级地图数据可视化看板。首先,新建两个数据集。第一个是各省指标数据集,将用于绘制全国指标图表,它的SQL语句如下
Python进阶者 Python进阶者
3年前
Pyecharts绘图API总结
一、初识Pyecharts大家好,我是Python进阶者。pyecharts简介pyecharts是一个用于生成Echarts图表的类库,Echarts是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而Python是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts
陈杨 陈杨
1个月前
鸿蒙5莓创图表饼图tooltip属性用法
大家好,欢迎回来鸿蒙5莓创图表组件的专场,我们这一期来讲解组合图组件中tooltip属性的完整用法。这个功能模块是数据可视化交互的核心配置,掌握它的细节能让图表信息展示更专业。下面我们从底层属性开始逐层拆解:一、基础开关属性show作用:控制是否显示浮动提