This document displays several d3.js example illustration
          how to build transitions. Reproducible and editable code is
          provided, hopefully allowing you to get the key concept of transition.
        
          This is the most basic transition you can build with
          d3.js. It smoothly changes the
          width attribute of a rectangle.
        
svg. Visit
                    this page for more on svg shapes.
                  d3.select(). Then .transition() is
                    called to initialize the transition. An optional
                    .duration() is specified: the animation here
                    lasts 2000 ms. Finally, the width attribute is
                    modified to 400px.
                  
  
 
          It is possible to pipe transitions: make them happen one after
          each other instead of simultaneously. For this to happen, you have to
          call the transition() function at the beginning of each
          step of the pipeline.
        
  
 It is possible to add delay between the transition of each element. Sometimes it adds a nice flow impression to the transition.
 
          Let's consider an X axis. We want to update the upper limit of the
          axis from 100 to 1000, with a smooth transition. D3.js makes it a
          breeze using the same transition() function.
        
axisBottom() function with a previous
                    transition().
                  
 Consider a dataset composed by 4 values. We map the X position of 4 circles to these values. We then switch to a second dataset that has exactly the same features.
enter() allows to start a loop on every
                    elements of data. append() is used
                    to add a circle at each iteration.
                  data(). Here the number of entry is the same:
                    no need to enter() to add new circle or to
                    exit() to delete circles
                  
 This example is almost the same as the previous one. However, there is now one more circle in the second list than in the first list.
enter() allows to start a loop on every
                    elements of data. append() is used
                    to add a circle at each iteration.
                  data(). Here the number of entry is the same:
                    no need to enter() to add new circle or to
                    exit() to delete circles
                  
 This example is almost the same as the previous one. However, there is now one less circle in the second list than in the first list.
enter() allows to start a loop on every
                    elements of data. append() is used
                    to add a circle at each iteration.
                  data(). Here the number of entry is the same:
                    no need to enter() to add new circle or to
                    exit() to delete circles