zoukankan      html  css  js  c++  java
  • [D3] Animate with the General Update Pattern in D3 v4

    In D3, the General Update Pattern is the name given to what happens when a data join is followed by operations on the enter, update, and exit selections. When a chart's data changes over time and each update can both create new elements and destroy existing ones, the General Update pattern can help convey meaning to users. This lesson demonstrates the pattern using animated transitions on a column chart.

    function render(subject = 'math') {
    
        // Define a resuable transation variable
        var t = d3.transition().duration(1000);
    
        var update = svg.selectAll('rect')
            .data(data.filter(d => d[subject]), d => d.name); //d => d.name is a uniq idientifier
    
        // First: we want to remove the existing object which doesn't have any value
            // Get rid of null value object
            // Also animation y and height attr to produce
            // fade out effect 
        update
            .exit()
            .transition(t)
            .attr('y', height)
            .attr('height', 0)
            .remove();
    
        // Second, we want to animate the existing elements height    
        update
            .transition(t)
            .delay(1000)
            .attr('y', d => yScale(d[subject]))
            .attr('height', d => height - yScale(d[subject]));
    
        // Last, for the new data which is not in the page before
            // We want to animate    
        update
            .enter()
            .append('rect')
            .attr('y', height)
            .attr('height', 0)
            .attr('x', d => xScale(d.name))
            .attr('width', d => xScale.bandwidth())
            .transition(t)
            .delay(update.exit().size() ? 2000: 0) // If page refresh, we don't want to wait 2000ms
            .attr('y', d => yScale(d[subject]))
            .attr('height', d => height - yScale(d[subject]));
    }
    
    render();

  • 相关阅读:
    storm学习笔记
    Hbase学习笔记
    Hadoop实战项目之网站数据点击流分析(转载分析)
    Hive实战之学生选课
    Hive实战之求月销售额和累计销售额
    Hive实战之每年最高温度+时间
    Hive实战之学生课程成绩
    网易-C++开发实习生-业务初面和复面(视频)-20211028
    2021粤港澳大湾区智能网络与通信系统论坛-1026~1027-线上
    jupyter notebook
  • 原文地址:https://www.cnblogs.com/Answer1215/p/7425026.html
Copyright © 2011-2022 走看看