繁体   English   中英

如何在d3中选择前两个元素并对它们应用过渡?

[英]How to select first two elements in d3 and apply transition to them?

我想在svg中选择前两个矩形并将过渡应用于它们。 我怎样才能做到这一点?

<svg width="1000px" height="500px" style="border:1px solid #AAA;"></svg>
<input type="button" value="Start" id="startTransition">

var dataArray = [5,10,20,30,40,50,60,70,80,90];
var baseLineYposition = 200;

var getY = function(value){
    return baseLineYposition - value;
};

var canvas = d3.select("svg");

var bars = canvas.selectAll("rect")
.data(dataArray)
.enter()
    .append("rect")
    .attr("width",30)
    .attr("height",function(d){return d;})
    .attr("x",function(d,i){return i * 50;})
    .attr("y",function(d,i){return getY(d);});


$(document).ready(function(){
    $("body").on("click","#startTransition",function(){

        var rect1 = d3.selectAll("rect")[0][0];
        var rect2 = d3.selectAll("rect")[0][1];

        rect1.transition().attr("x",200);
        rect2.transition().attr("x",300);
    });
});

此代码提供以下错误。

 rect1.transition is not a function

我会选择所有元素,然后过滤掉你不想要的元素:

var rects = d3.selectAll("rect")
              .filter(function(d, i) { return i == 0 || i == 1; });

rects.transition()...

这是为了应用donut chart特定node / element的转换。

var arcOver = d3.svg.arc()
    .innerRadius(chart_r * 0.7)
    .outerRadius(chart_r * 1.08);

d3.selectAll('.donut')
    .selectAll('path')
    .each(function(d, i){
        if (i == 2) {
            d3.select(this)
              .transition()
              .duration(500)
              .attr("d", arcOver);
        }
    });

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM