美文网首页收藏
[D3]时间映射

[D3]时间映射

作者: alue | 来源:发表于2022-04-02 22:10 被阅读0次

例如想绘制下面的日期选择器,每一个小线段代表一个颜色,一个可以滑动的时间窗口用来标记当前的时间范围。


滑动时间窗口

如果不用借助D3,我们会面临一个问题,每个线段的长度都需要计算,每个月的天数都不同,所以对应的长度也不同,而且还需要做闰年判断。另外,还需要监听页面大小变动的事件。

有了D3,这些就是几句话的事情

  d3.scaleTime().domain([
          new Date(year, 1, 1),
          new Date(year, 12, 31),
        ])
        .range([0,totalWidth])

上面这句话就定义了一个时间上的线性映射,让1月1日映射为0,12月31日映射为总长度。

后面就好办了,例如每个月的第一天的坐标就可以一行代码得到:

d3.range(12).map((idx) => scale(new Date(year.value, idx, 1)))

可以看出D3不仅仅是绘图库,它的好处在于,D3把绘图常见情景的数据处理都封装好了,的确是很方便。

p.s.
JS原生的 Date 好坑,new Date(2022,1,1) 居然对应的是2月1日,太反人类了!

相关文章

  • [D3]时间映射

    例如想绘制下面的日期选择器,每一个小线段代表一个颜色,一个可以滑动的时间窗口用来标记当前的时间范围。 如果不用借助...

  • d3比例尺

    d3比例尺好比地图上的映射,偌大的世界可以缩小到一张很小的纸上,d3在作图的过程中,为了将数据映射展示到一张小小的...

  • d3之操作数组 二 (map与set)

    d3之操作数组 一 (统计,检索,变换)d3之操作数组 三(nest) d3.map() map其意为映射,es6...

  • 可视化D3.js库(6)-比例尺

    D3.js库-6-比例尺的使用 比例尺在D3中是一个非常实用的工具,可以这样理解比例尺:的关系,从domain映射...

  • d3.js

    D3是什么? D3: 是Data-Driven Documents(数据驱动文档)的简称。 D3(或D3.js) ...

  • Vue D3 力导向图

    1. 安装 前端工程根目录下执行 yarn add d3 ,安装 d3 依赖包。安装的版本 "d3": "^5...

  • d3基础知识

    h5: Angular ts文件:import * as d3 from 'd3'; ngOnInit(): ...

  • Explore D3

    d3 v5 Tech Stack ? Node Webpack D3 Installation ? Compile...

  • 2018-09-14_D3.js

    Data Visualization with D3 D3: SVG中的jQurey 1. Add Documen...

  • 2019-03-30计算机二级

    '=VLOOKUP(D3,编号对照!$A$2:$C$19,2,FALSE) '=VLOOKUP(D3,编号对照!$...

网友评论

    本文标题:[D3]时间映射

    本文链接:https://www.haomeiwen.com/subject/aodxsrtx.html