首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >D3。多个元素可以与单个基准相关联吗?

D3。多个元素可以与单个基准相关联吗?
EN

Stack Overflow用户
提问于 2015-06-19 17:22:29
回答 1查看 170关注 0票数 1

典型的D3成语如下所示:

代码语言:javascript
复制
svg.selectAll("circle")
    .data(data)
  .enter().append("circle")

这将一个数据与一个元素(SGVdiv等)关联起来。是否可以将多个元素与数据关联起来,然后根据与单个数据关联的元数据以稍微不同的方式呈现它们。

在我的例子中,我有一个直方图d3.layout.histogram。每个直方图bin是一个由子块组成的聚合值。我想呈现聚合,然后呈现在聚合之上的子部分。

我不喜欢为每个子块创建单独的直方图。

有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-21 18:31:47

正如@mark在他的评论中提到的那样,可以使用嵌套选择实现所期望的行为。

Mike Bostock的基本示例如下:

代码语言:javascript
复制
var matrix = [
  [ 0,  1,  2,  3],
  [ 4,  5,  6,  7],
  [ 8,  9, 10, 11],
  [12, 13, 14, 15],
];
var td = d3.selectAll("tbody tr")
  .data(matrix)
.selectAll("td")
  .data(function(d, i) { return d; }); // d is matrix[i]

首先,将数据绑定到“父元素”,这是本例中的tr。数组matrix中的每个元素将被分配给一个tr元素。

tr元素中,您可以选择子片段,并通过调用带有函数作为参数的data()来分配相应的数据。这样,在每个tr内部就会有四个td元素,并分配给它相应的编号。

要实际追加元素并在表中显示数字,您可以执行以下操作:

代码语言:javascript
复制
var matrix = [
  [ 0,  1,  2,  3],
  [ 4,  5,  6,  7],
  [ 8,  9, 10, 11],
  [12, 13, 14, 15],
];
var table = d3.select("body").append("table");

var tr = table.selectAll("tr")
  .data(matrix)
.enter().append("tr");

var td = tr.selectAll("td")
  .data(function(d) { return d; })
.enter().append("td").text(function(d){return d;});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30943886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档