matplotlib/matplotlib — pull request #1664 by dopplershift (2013-01-16 04:50:42+00:00)
Title: Support for skewed transforms

The purpose of these changes is to add support for skewed transforms (for the uninitiated, a skewed transform is essentially rotating the x and y axes by different angles). Such transforms are useful for some plot types--one specific such example is the Skew-T in meteorology, which is used to plot vertical profiles of temperature with a skewed x-axis. The x and y axes cross at a (nominally) 30 degree angle--the skewing helps reduce the space occupied by the plot.

To see an example of this work in action, checkout this PR and run the script in this [gist](https://gist.github.com/3149192).

Overall, no significant changes to matplotlib were required--just adding the transforms and finding little places where assumptions needed to be replaced by more generic calls/attributes. These changes are what I need to be able to make my skewed plots without overriding significant portions of matplotlib, but don't affect (to my knowledge) any existing matplotlib code.

Using these transforms still requires some significant effort (as seen in the gist), mostly due to the fact that the upper and lower x axes have different data ranges. (I'd love to have these in matplotlib too, but it would require massive changes to matplotlib with little gain to most people, and most likely a speed penalty for the genericity.)

Summarizing the changes:

1. Add skew transforms
2. Fix pan/zoom for the transform
3. Fix `axhline()` and friends
4. Fix spines
5. Make spines draw (update) before the axis (ticks)