暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据可视化-D3.js框架:「17] 给 D3 元素添加标签

路条编程 2021-11-07
942



这一系列课程将介绍D3.js 或 D3 代表数据驱动的文档。D3 是一个 JavaScript 库,用于在浏览器中创建动态和交互式数据可视化。它是为使用常见的 web 标准而构建的,即 HTML、CSS 和可伸缩矢量图形(SVG)。

D3 获取输入数据并将其映射为该数据的可视表示。它支持多种不同的数据格式。D3 允许您将数据绑定(或附加)到文档对象模型(DOM)。您可以使用带有 D3 内置方法的 HTML 或 SVG 元素将数据转换为可视化。

D3 为您提供了对数据表示的大量控制。本课程将介绍 D3 库的基本功能以及如何使用 D3 库创建可视化效果。

给 D3 元素添加标签

D3 允许使用 SVG 的 text 元素给图形元素贴标签,例如给条形图中的各组都贴上标签。

和 rect 元素类似,text 元素也需要 x 和 y 属性来指定其放置在 SVG 画布上的位置,它也需要能够获取数据来显示数据值。

关于如何给组贴标签,D3 给了你很高的控制权。

下面代码中的代码已经将数据绑定到每个新的 text 元素。首先,在 svg 中添加 text 节点。然后,添加 x 和 y 坐标属性,除了 text 的 y 值应该使标签比组的高 y 3 个单位,其余值的计算方法应该和 rect 中计算方法一样。最后,用 D3 的 text() 方法将标签的文本设置为和数据点相等的值。

提示:关于标签比组高,想一想 text 的 y 值应该比组的 y 值大 3 还是小 3。

完整代码如下所示:


<body>
<script>
const dataset = [12, 31, 22, 17, 25, 18, 29, 14, 9];




const w = 500;
const h = 100;




const svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);




svg.selectAll("rect")
.data(dataset)
.enter()
.append("rect")
.attr("x", (d, i) => i * 30)
.attr("y", (d, i) => h - 3 * d)
.attr("width", 25)
.attr("height", (d, i) => 3 * d)
.attr("fill", "navy");




svg.selectAll("text")
.data(dataset)
.enter()
.append("text")
.attr("x", (d, i) => i * 30)
.attr("y", (d, i) => h - 3 * d - 3)
.text((d, i) => d);
</script>
</body>

今天就讲到这里,如果有问题需要咨询,大家可以直接留言或扫下方二维码关注公众号。也可以添加 happyzjp 微信受邀加入学习社群,我们会尽力为你解答。练习网站已经正式上线,大家可以登陆网站 http://www.icoderoad.com 进行文章中示例的练习。
文章转载自路条编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论