javascript - 如何在 D3 中链接函数调用?

标签 javascript d3.js

定义了一个绘制函数以便重用,但它是独立的语句。

draw(circles);

有没有办法将draw函数放回(重写)D3的函数链?

svg.selectAll("circle")
            .data(dataset)
            .enter()
            .append("circle")
            .draw(???) //not work. 

这是代码。工作版本是 here

<body>
    <script type="text/javascript">

        var draw = function (circles) {
            circles.attr("cx", function (d, i) {
                return (i * 50) + 25;
            })
         .attr("cy", h / 2)
         .attr("r", function (d) {
            return d;
         });
        };

        var w = 500, h = 50;

        var dataset = [5, 10, 15, 20, 25];
        var dataset2 = [25, 20, 15, 10, 5];

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

        var circles = svg.selectAll("circle")
            .data(dataset)
            .enter()
            .append("circle")

        draw(circles);

        var circles2 = svg.selectAll("circle")
        .data(dataset2)
        .transition()
        .duration(2000);

        draw(circles2);

    </script>
</body>

最佳答案

在draw()中使用call() + this。 工作版本是 here

var draw = function () {
    this.attr("cx", function (d, i) {
        return (i * 50) + 25;
    })
    .attr("cy", h / 2)
    .attr("r", function (d) {
        return d;
    });
};

circles
.data(dataset)
.enter()
.append("circle")
.call(draw)
.data(dataset2)
.transition()
.attr("fill", "red")
.duration(2000)
.call(draw);

关于javascript - 如何在 D3 中链接函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29638335/

相关文章:

javascript - Javascript 字符串中的特殊字符无法正确显示

javascript - 使 Jquery.ScrollTo 根据速度而不是持续时间工作

javascript - 用于 JSP、Java EE 项目的 Assets 打包工具,如 jammit?

javascript - C3条形图-自定义X轴标签

javascript - 在 .json 中查找最大值和最小值

javascript - d3 力定向网络的 json 表示

javascript - React JS : Filtering an array of objects by another array of objects. 如何顺序执行四个函数,包括。多次 API 调用

javascript - 如何使用 jQuery/Javascript 将帖子预览替换为完整内容?

d3.js - 如何使用 d3js 包布局调整父圆半径

javascript - 使用新 map 和数据重建 D3 动画分区统计图