matplotlib/matplotlib — pull request #3944 by tacaswell (2014-12-23 16:38:26+00:00)
Title: WIP : major Axes refactor

This branch is the start of work to unify the storage of the artists in the Axes into a single tree. I think this will simplify the serialization and export code we want to add. I also think this will make it easier to implement logic to check if a canvas needs to re-drawn. In all cases, the benefit comes from having a single Artist tree to walk.

The first step of this is to promote `Containers` to be full-class `Artists` and use them for drawing (not just sorting out legend handles and returning). This will fix the z-order overlap issues with error bar (#409).

There is some magic in how the broadcasting of the `{set,get}_*` methods works which should probably have some discussion around it.

The sub-class of `list` is so that we can maintain back-compatibility for users that are removing artists by mucking with the internal data structures.

- [ ] intra-container zorder
- [ ] update all usage of `Container` sub-classes (only ~5)
- [ ] unify draw logic to a single tree
- [ ] make sure all the back compatibility works
- [ ] make remove fully clean up after `add_*`
- [ ] deprecate all of the `add_*` methods
- [ ] add visitor-pattern API