Good writeup, thanks Christian. One thing I’m still trying to grasp is how D3 decides which nodes are exiting and which are updating. In your example if you remove the first datum, in my testing, it does remove the first bar, but it considers bars two through four to have updated. So it now says that datum one belongs to the second node, and the second node updates. My hope would be that I could somehow remove the first datum and have the first bar animate out, but that the other bars would remain static.
Perhaps further research will reveal this.