# Adding Arrows to Polar Plot

Dear All,
I am not very much into matplotlib, so please bear with me if I am asking a trivial question.
I put together this small snippet with the help I got on the mailing list and using the arrow example at

My problem is (or at least I believe it to be) the fact that I am messing up the coordinates or rather: I am generating a x and y coordinates in the range [-1,1], but I eventually resort to polar coordinates. It all goes fine till I try adding arrows to the image (then I think about Cartesian coordinates) and the result is quite a mess.
Bottom line: any ideas about how to use arrows in a polar plot?
Many thanks

Lorenzo

···

##########################################################################

#!/usr/bin/env python
"""
See pcolor_demo2 for a much faster way of generating pcolor plots
"""
from __future__ import division
from pylab import *

# make these smaller to increase the resolution
dx, dy = 0.005, 0.005

x = arange(-1.0, 1.0, dx)
y = arange(-1.0, 1.0, dy)
X,Y = meshgrid(x, y)

# function defined in polar coordinate
def func5(theta, r):
y = r*np.sin(theta)
theta=np.arcsin(y)
return np.cos(theta)

def func6(theta, r):
y = r*np.sin(theta)
theta=np.arcsin(y)
return np.abs(sin(theta))

def func7(theta, r):
y = r*np.sin(theta)
theta=np.arcsin(y)
return np.abs(cos(theta))

R=1.
n_theta, n_r = 360, 100

# coordinates of the mesh
theta = np.linspace(0, 2*np.pi, n_theta+1)
r = np.linspace(0., R, n_r + 1)

dr, dtheta = r-r, theta-theta

# cooridnate for the data point
theta_d = np.arange(dtheta/2., 2*np.pi, dtheta)
r_d = np.arange(dr/2., R, dr)

TT, RR = meshgrid(theta_d, r_d)
# Z = func6(TT, RR)

Z = func7(TT, RR)

ax=subplot(1,1,1, projection="polar", aspect=1.)
ax.pcolormesh(theta, r, Z)

# ax.set_xlabel('Model complexity --->')

ax.set_yticklabels([])
ax.set_xticklabels([])

ax.grid(False)
# show()

arr = Arrow(0, 0, .3, .3, edgecolor='white')

# Get the subplot that we are currently working on
ax = gca()

# We should be able to make modifications to the arrow.
# Lets make it green.
arr.set_facecolor('g')

savefig("test.pdf")

clf()

I recommend you to use the annotate command.

annotate("", xy=(0, 0), xytext=(0.3, 0.3), arrowprops=dict(fc="g"))

see

http://matplotlib.sourceforge.net/users/annotations_guide.html#annotating-with-arrow

Regards,

-JJ

···

On Fri, Oct 15, 2010 at 9:33 PM, Lorenzo Isella <lorenzo.isella@...287...> wrote:

arr = Arrow(0, 0, .3, .3, edgecolor='white')

# Get the subplot that we are currently working on
ax = gca()