javascript - d3.js 为每个数据点创建两个元素

标签 javascript d3.js

我想在每个条形后面添加另一个 rect 元素,但我很难做到这一点,因为 d3.js 不允许我为每个数据点添加另一个元素。

http://jsfiddle.net/g5hpwf0m/2/

var w = parseInt(d3.select(self).style("width")),
    h = parseInt(d3.select(self).style("height")),

    svg = d3.select(self)
            .append("svg")
            .attr("width", w)
            .attr("height", h),

    yScale = d3.scale.linear()
             .domain([0, d3.max(dataset)])
             .range([0,h]);

svg.selectAll("rect")
        .data(dataset)
        .enter()
        .append("rect")
        .attr("fill", "green")
        .attr("x", function(d, i) {
            return i * (w / dataset.length);
        })
        .attr("y", function(d) {
            return h - yScale(d);
        })
        .attr("width", w / dataset.length - barPadding)
        .attr("height", function(d){return yScale(d);});

我试过添加这个,但它没有做任何事情。

svg.selectAll("rect")
        .data(dataset)
        .enter()
        .append("rect")
        .attr("fill", "black")
        .attr("x", function(d, i) {
            return i * (w / dataset.length);
        })
        .attr("y", function(d) {
            return h - yScale(d);
        })
        .attr("width", w / dataset.length - barPadding)
        .attr("height", "100%");

最佳答案

您可能想要创建一个“g”元素并将矩形放置在每个相应的“g”元素下。

var toprects = svg.append('g').attr('class','toprect');
var bottomrects = svg.append('g').attr('class','bottomrect');

bottomrects.selectAll("rect")....
toprects.selectAll("rect")....

http://jsfiddle.net/ermineia/g5hpwf0m/3/

关于javascript - d3.js 为每个数据点创建两个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34914197/

相关文章:

javascript - iFrame 不适用于移动版网站

javascript - 卡住力定向网络图并在 D3 中可拖动

javascript - 在 d3.js 中使用 x3dom 的 API 或教程?

javascript - 图表弧在刷新后收缩

javascript - 如何更改D3中的x轴?

javascript - indexOf 无法在 Google Apps 脚本中工作

javascript - 后端驱动网站的 javascript 单元测试

javascript - 将 emoji javascript unicode 代码转换为 utf-8

javascript - Jquery隐藏/显示滚动动画

javascript - 如何在 svg 上监听键盘事件