javascript - 在 d3 中访问不同级别的嵌套列表

标签 javascript d3.js

假设我有一个格式如下的列表:

dataset = [["10", "asdf"], ["20", "jkl"], ["30", "bla"]]

我想在每个嵌套列表的第二个元素中为每个单独的字符附加文本。我还希望每个字母的 x 位置由列表的第一个元素确定。因此,例如,a 的 x 位置应为 10,对于 s - 11 d - 12... j - 20k - 21 ,等等。

在我目前的代码中,我只显示第一个字母,因为我没有遍历列表的正确部分:

chartBody.selectAll("exampletext")
                       .data(dataset)
                       .enter()
                       .append("text")
                       .attr("class", "exampletext")
                       .text(function(d) {
                            for (var i=0; i <= d[1].length; i++)
                                {
                                    return d[1][i];
                                }
                       })
                       .attr("x", function(d) {
                            for (var i=0; i <= d[1].length; i++)
                                {
                                    return xScale(+d[0]) + i; 
                                }
                       })
                       .attr("y", h/2);

最佳答案

我不知道你为什么需要这个(输出真的很难读懂)但它在这里:http://jsfiddle.net/uNQA9/ .

重要的变化是在提供给 d3 之前构建字母和位置列表:

var dataset, h, i, letter, pair, r, viewport, xScale, _i, _j, _len, _len1, _ref;

dataset = [["10", "asdf"], ["20", "jkl"], ["30", "bla"]];

r = [];    
i = 0;

/*loop each pair, push into a new array */


for (_i = 0, _len = dataset.length; _i < _len; _i++) {
  pair = dataset[_i];
  i = 0;
  _ref = pair[1];
  for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {
    letter = _ref[_j];
    r.push([+pair[0] + i, letter]);
    i++;
  }
}

那个 JS 很丑陋(但 super 兼容),因为我是从这段(可读性很好的)coffeescript 中得到的:

dataset = [["10", "asdf"], ["20", "jkl"], ["30", "bla"]]
r = []
i = 0 
#loop each pair, push into a new array
for pair in dataset
  i = 0
  for letter in pair[1]
    r.push([+(pair[0]) + i, letter]) 
    i++ 

我在这里制作了一个更具可读性的版本:http://jsfiddle.net/UtUeP/ .如果您想增加字母之间的差异,请查看 d3 颜色函数,例如:d3.scale.category10(): https://github.com/mbostock/d3/wiki/Ordinal-Scales

关于javascript - 在 d3 中访问不同级别的嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19039453/

相关文章:

javascript - Alertify 让我点击两次

javascript - 函数没有返回值,只有console.logs

javascript - 如何使用 d3 数组中的组和汇总汇总数组?

javascript - d3.js - 为什么笔画会模糊,除非偏移 0.5?

javascript - 用 D3 和 Leaflet 重复 SVG

javascript - 如何使用 React 向下滚动来淡化导航栏?

javascript - Twitter 喜欢 ASP.Net 中的新推文计数通知

javascript - 为什么在将用户输入数据库时​​出现错误?

javascript - 具有固定 x Axis 和 y Axis 的 NVD3.js 多图表

javascript - 如何使用 D3 从 Bower 安装 D3 到 Angular 项目