D3.js 数据可视化教程:四步做出第一张实时图表
D3.js 数据可视化教程四步做出第一张实时图表【免费下载链接】d3Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada:项目地址: https://gitcode.com/GitHub_Trending/d3/d3D3.js 是一个免费开源的数据可视化 JavaScript 库基于 SVG、Canvas 和 HTML 这些 Web 标准构建。它不预设图表模板而是把数据直接绑定到 DOM 元素也就是页面上的所有元素让你完全控制每个数字长什么样。流程很短克隆仓库、画一张基础图再让图表跟着实时数据动起来。数据在变图表却停在同一帧你大概率遇到过这种情况页面上的图是画出来了但数据更新后它只是一张静态图片没有动画没有交互预设的图表类型还不太合业务。问题不在数据而在绘制层不是数据驱动的。D3.js 换了个思路你先写清楚数据到图形的映射规则数据变了图形就跟着变。从一张简单柱状图到可交互的地图空间都留给你自己。上手走查从克隆仓库到第一张实时图表1. 获取源码并安装依赖在终端执行以下命令把 D3 仓库克隆到本地并安装依赖需要 Node.js 12 及以上git clone https://gitcode.com/gh_mirrors/d3/d3 cd d3 yarn install2. 在页面中引入 D3仓库入口文件 src/index.js 聚合了全部功能模块在 HTML 里以 ES 模块方式引入即可script typemodule import * as d3 from ./src/index.js; /script3. 画一张静态柱状图先声明一个比例尺scaleLinear把数值区间映射到像素区间再把 5 个数字绑定成 5 个矩形let data [10, 20, 30, 40, 50]; const x d3.scaleLinear().domain([0, d3.max(data)]).range([0, 300]); const svg d3.select(body).append(svg).attr(width, 400).attr(height, 300); svg.selectAll(rect).data(data).enter().append(rect) .attr(x, 50).attr(y, (d, i) i * 40) .attr(width, d x(d)).attr(height, 30).attr(fill, steelblue);4. 让图表跟着数据实时走每秒重新绑定一组带随机波动的数据用 transition 加 500 毫秒动画柱子会随数据变化平滑伸缩function update() { data data.map(d Math.max(0, d Math.random() * 10 - 5)); svg.selectAll(rect).data(data) .transition().duration(500) .attr(width, d x(d)); } setInterval(update, 1000);除了画图表D3.js 还内置了哪些能力数据绑定一组元素和数据数组直接对应数据替换、图形同步更新这是数据驱动的起点。比例尺线性、时间、分带等比例尺把数值、时间、类别映射成像素、颜色、粗细换算不用自己做。模块化功能拆成数组、形状、比例尺、力导向、地理等 30 个模块可以全量使用也可以只挑需要的保持包体小。交互与动画缩放、拖拽、刷选都内置配合过渡transition让数据更新过程平滑自然。布局算法圆形打包、树形、矩形树图、力导向图传入数据就能算好坐标。看实际效果层级数据变嵌套圆这是 d3-hierarchy 模块的 pack 圆形布局效果每个圆的大小对应一份数据的量级父子关系用嵌套圆表达一眼看清层级。D3 4.0 重写了这套算法父圆能严丝合缝地包住子圆排列更紧凑边缘不再留空隙。资源导航docs/getting-started.md官方入门覆盖 HTML、npm、React、Svelte 下的最简用法适合第一次接触 D3.js 的人。docs/api.md全部 30 个模块的 API 索引适合写代码时按名查函数和参数。docs/d3-hierarchy/pack.md层级布局模块文档适合想深入圆形打包、树形等布局细节的人。docs/community.md社区与求助渠道适合遇到问题想找人讨论的人。无论你想给产品加上交互式图表还是把自己的数据变成看得见的图形这套模块化工具都足够起步。去克隆仓库画第一张跟着数据变化的图吧。【免费下载链接】d3Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada:项目地址: https://gitcode.com/GitHub_Trending/d3/d3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考