On 08/27/2010 07:15 AM, Ryan May wrote:
> On Thu, Aug 26, 2010 at 2:24 PM, Ben Edwards<bedwa...@cs.unm.edu>  wrote:
>> Hello, I've used matplotlib for a while but never had cause to ask a
>> question until now. I am trying to add a patch to an axis, but would like
>> the patch to remain the same size when, interactively, I resize the
>> resulting figure. I am using TkAgg, and trying the following:
>>>>> import matplotlib.pyplot as plt
>>>>> import matplotlib.patches as patches
>>>>> ax = plt.gca()
>>>>> cp = patches.Circle((.5,.5),.025)
>>>>> ax.add_patch(cp)
>>>>> ax.set_aspect('equal')
>>>>> plt.draw()
>>>>> plt.show()
>> This gives me a nice blue circle in the middle of the plot, and using
>> ax.set_aspect('equal') I know that it will not be distorted into an ellipse.
>> But is there a way to ensure that when I make the Tk window bigger, that the
>> circle appears to be the same size as it was previously? I assume this would
>> entail some sort of transform, but I don't quite understand how they work...
>
> You can make the circle this way, specifying everything in axes coordinates:
>
> cp = patches.Circle((.5,.5),.025, transform=ax.transAxes)
>
> However, this puts the circle in the same spot in axes coordinates
> [(0.5,0.5) is the middle of the plot]. I'm not sure if that's what you
> want.  I can't see any way to get Circle to use different transforms
> for the center and the size, so from here the only path forward I see
> is subclassing Circle. This way you could add code to the draw method
> to calculate the center in axes coordinates from the center in data
> coords. This needs to be done at draw time since the mapping of data
> coords->axes coords changes as you pan and zoom.

A simpler alternative is to use a CircleCollection with a single member. 
  Collections allow separate transforms for the patch and the offset; 
the latter determines the location of the center.

Eric

>
> Ryan
>


------------------------------------------------------------------------------
Sell apps to millions through the Intel(R) Atom(Tm) Developer Program
Be part of this innovative community and reach millions of netbook users 
worldwide. Take advantage of special opportunities to increase revenue and 
speed time-to-market. Join now, and jumpstart your future.
http://p.sf.net/sfu/intel-atom-d2d
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to