I have discovered, from the mailing list, the easy way to draw a circle in linear space:
cx = 700
cy = 700
r = 1000
xmin = cx - r
xmax = cx + r
ymin = cy - r
ymax = cy + r
cir = Circle( (cx,cx), radius=r,facecolor='w',edgecolor='b')
a = gca()
a.add_patch(cir)
axis([xmin,xmax,ymin,ymax])
axis('equal')
However, when trying to overplot a circle on an existing log/log plot, I get a circle section:
e = [70,1,1,12,7,185,6,3,0,1015,6,222,500,0,661,105,0,8706,0,23,131,0,0,0,6,22,1,4,0]
o = [180,2,0,15,13,3,0,0,0,20,6,2000,9748,0,38,100,0,20023,0,2,0,0,0,0,1,0,0,0,1]
f1 = figure()
loglog(o,e,'b.')
hold('on')
cx = 700
cy = 700
r = 1000
xmin = cx - r
xmax = cx + r
ymin = cy - r
ymax = cy + r
cir = Circle( (cx,cx), radius=r,facecolor='w',edgecolor='b')
a = gca()
a.add_patch(cir)
axis([xmin,xmax,ymin,ymax])
axis('equal')
How can I plot a circle in log space?
As an additional aside, I've discovered that even if I define the points that make up a circle (in linear space), I cannot plot a smooth line through them using the plot() function:
def pol2cart(th,r):
x = r*cos(th)
y = r*sin(th)
return (x,y)
def drawCircle(cx,cy,radius,np,style):
theta = linspace(0,2*pi,np)
rho = ones((1,np))*radius
x,y = pol2cart(theta,rho)
x = x + cx
y = y + cy
plot(x,y,style)
cx = 700
cy = 700
r = 1000
drawCircle(cx,cy,r,1000,'b')
When I look at the resulting plot, I see empty axes. If I change the plot style to 'b.', then I see the circle. Is this a bug or an undocumented feature?
Thanks,
Mike Hearne