【问题标题】:Starting Transitions and Animations With Area Graph in D3.JS在 D3.JS 中使用区域图启动过渡和动画
【发布时间】:2014-06-05 01:02:14
【问题描述】:

我想让面积图在程序开始时从左到右“绘制”自身。我的图表中已经有一条线在执行此操作,但是当页面首次启动时,我无法使线下的区域正确设置动画或“绘制”自身。目前,这就是我所在地区的情况。

var area = d3.svg.area()
    .x(function(d) {return xScale(d.date); })
    .y0(line_chart_height)
    .y1(function(d) {return yScale(d.close); });

line_chart.append("path")
    .datum(data)
    .attr("class", "area")
    .attr("d", area)

我可以在那里很好地绘制该区域并很好地绘制线条,但我无法做到这样,当页面首次加载时,该区域基本上会像本例中的线条一样从左到右“绘制”自身, 除了从左到右,不是从右到左。

感谢任何帮助,我已尝试使用以下方法,但它对我不起作用。

.datum(data)
.transition().duration(2500)
.attr("d", area)

提前致谢, 山姆

【问题讨论】:

    标签: javascript animation svg d3.js


    【解决方案1】:

    考虑使用svg clipPath,即:

    svg.append("clipPath")
        .attr("id", "rectClip")
      .append("rect")
        .attr("width", 0)
        .attr("height", height);
    

    然后,您可以通过在页面加载时转换剪切路径来模拟项目的绘制:

    d3.select("#rectClip rect")
      .transition().duration(3000)
        .attr("width", width);
    

    这是一个 jsfiddle 示例:http://jsfiddle.net/qAHC2/688/

    【讨论】:

    • 这很漂亮。干得好!是否有其他属性采用url(#id) 值?它似乎是document.getElementById 的简写,但它只适用于 svg?
    • 好主意!也适用于我的其他图表。谢谢。
    猜你喜欢
    • 2018-05-24
    • 2015-07-14
    • 2018-02-17
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多