At long last, I finally have a prototype version of polar plots / axes

/ transforms in CVS (mirrors may lag).

I don't use polar plots a lot in my own work, so those of you who do

should provide some feedback on the implementation, appearance and

functionality.

See examples/polar_demo.py (included below)

Here is a snapshot of the src distribution if you have CVS problems

http://nitace.bsd.uchicago.edu:8080/files/share/matplotlib-0.64.0a.tar.gz

In particular, I need some feedback on how setting axis limits should

work and what, if anything, the navigation controls are expected to

do. These issues are discussed a bit more in the polar_demo.py

example file.

Let me know....

JDH

#!/usr/bin/env python

## ···

#

# matplotlib now has a PolarAxes class and a polar function in the

# matplotlib interface. This is considered alpha and the interface

# may change as we work out how polar axes should best be integrated

#

# The only function that has been tested on polar axes is "plot" (the

# matlab interface function "polar" calls ax.plot where ax is a

# PolarAxes) -- other axes plotting functions may work on PolarAxes

# but haven't been tested and may need tweaking.

#

# you can get get a PolarSubplot instance by doing, for example

#

# subplot(211, polar=True)

#

# or a PolarAxes instance by doing

# axes([left, bottom, width, height], polar=True)

#

# The view limits (eg xlim and ylim) apply to the lower left and upper

# right of the rectangular box that surrounds to polar axes. Eg if

# you have

#

# r = arange(0,1,0.01)

# theta = 2*pi*r

#

# the lower left corner is 5/4pi, sqrt(2) and the

# upper right corner is 1/4pi, sqrt(2)

#

# you could change the radial bounding box (zoom out) by setting the

# ylim (radial coordinate is the second argument to the plot command,

# as in matlab, though this is not advised currently because it is not

# clear to me how the axes should behave in the change of view limits.

# Please advise me if you have opinions. Likewise, the pan/zoom

# controls probably do not do what you think they do and are better

# left alone on polar axes. Perhaps I will disable them for polar

# axes unless we come up with a meaningful, useful and functional

# implementation for them.

#

# Note that polar axes are sufficiently different that regular axes

# that I haven't stived for a consistent interface to the gridlines,

# labels, etc. To set the properties of the gridlines and labels,

# access the attributes directly from the polar axes, as in

#

# ax = gca()

# set(ax.rgridlines, color='r')

#

# The following attributes are defined

#

# thetagridlines : a list of Line2D for the theta grids

# rgridlines : a list of Line2D for the radial grids

# thetagridlabels : a list of Text for the theta grid labels

# rgridlabels : a list of Text for the theta grid labels

from matplotlib.matlab import *

r = arange(0,4,0.001)

theta = 6*pi*r

polar(theta, r)

title("It's about time!")

savefig('polar_demo')

ax = gca()

show()