[Matplotlib-users] PolyCollection and transforms

2007-11-29 Thread Mika, David P (GE, Research)
I am trying to animate the movement of a polygon and thought a sound
approach would be to in a loop where I redraw after altering the offsets
value.  However I seem to not be able to scale the polygon correctly.
Here is an example of only trying to place a polygon (square) at 1,1.
You can see the translation is correct, but the scaling is wrong--the
polygon is only about a pixel high & wide.
Dave


--
import pylab as P
from matplotlib import collections, axes, transforms
import matplotlib.numerix as N

fig = P.figure()
a = fig.add_subplot(1,1,1)

verts = N.array([[0,0],[1,0],[1,1],[0,1]])
offsets = [[1,1]]
col = collections.PolyCollection([verts], offsets=offsets,
transOffset=a.transData)
a.add_collection(col)
trans =
transforms.scale_transform(transforms.Value(1),transforms.Value(1))
col.set_transform(trans) 
a.set_xlim([-5,5])
a.set_ylim([-5,5])
P.show()


--


-
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell.  From the desktop to the data center, Linux is going
mainstream.  Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Drawing filled circles (discs)

2007-09-20 Thread Mika, David P (GE, Research)
In the solution I gave, CirclePolygon has a resolution argument for
number of vertices to approximate the circle (default=20).  You could
increase that value to some more appropriate level:

import matplotlib
from matplotlib.patches import CirclePolygon
from matplotlib.collections import PolyCollection
import pylab 

fig=pylab.figure()
ax=fig.add_subplot(111) 

resolution = 50 # the number of vertices 
N = 20
x   = pylab.rand(N)
y   = pylab.rand(N)
radii   = 0.1*pylab.rand(N)
colors  = 100*pylab.rand(N)
verts   = []
for x1,y1,r in zip(x, y, radii):
circle = CirclePolygon((x1,y1), r, resolution)
verts.append(circle.get_verts())

p = PolyCollection(verts, cmap=matplotlib.cm.jet)
p.set_array(pylab.array(colors))
ax.add_patch(p)
pylab.colorbar(p)

ax.axis('equal')
pylab.show()



-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
sidimok
Sent: Thursday, September 20, 2007 4:59 AM
To: matplotlib-users@lists.sourceforge.net
Subject: Re: [Matplotlib-users] Drawing filled circles (discs)



Mika, David P (GE, Research) wrote:
> 
> How about this solution?  I'm a complete newbe, but this seems to do 
> the trick.  I didn't see a CircleCollection so I used CirclePolygon to

> generate vertices for a circle; these I grab and toss into a 
> PolyCollection.  Enjoy, Dave
> 
> 

Hi all!

Thank you very much indeed for the help, both solutions work like a
charm.
However Dave's one gives rough cirlces, approximated by polygones, which
is not very accurate for my buisness. May I ask how to create a
circleCollection as Jouni "The Expert" proposed?
You can find below one of my plottings rendered by Jouni's first trick.

http://www.nabble.com/file/p12793350/image.png
--
View this message in context:
http://www.nabble.com/Drawing-filled-circles-%28discs%29-tf4441651.html#
a12793350
Sent from the matplotlib - users mailing list archive at Nabble.com.



-
This SF.net email is sponsored by: Microsoft Defy all challenges.
Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Drawing filled circles (discs)

2007-09-19 Thread Mika, David P (GE, Research)
How about this solution?  I'm a complete newbe, but this seems to do the trick. 
 I didn't see a CircleCollection so I used CirclePolygon to generate vertices 
for a circle; these I grab and toss into a PolyCollection.  Enjoy, Dave

import matplotlib
from matplotlib.patches import CirclePolygon from matplotlib.collections import 
PolyCollection import pylab 

fig=pylab.figure()
ax=fig.add_subplot(111) 

N = 20
x   = pylab.rand(N)
y   = pylab.rand(N)
radii   = 0.1*pylab.rand(N)
colors  = 100*pylab.rand(N)
verts   = []
for x1,y1,r in zip(x, y, radii):
circle = CirclePolygon((x1,y1), r)
verts.append(circle.get_verts())

p = PolyCollection(verts, cmap=matplotlib.cm.jet)
p.set_array(pylab.array(colors))
ax.add_patch(p)
pylab.colorbar(p)

ax.axis('equal')
pylab.show()



-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Jouni K. Seppänen
Sent: Wednesday, September 19, 2007 11:03 AM
To: matplotlib-users@lists.sourceforge.net
Subject: Re: [Matplotlib-users] Drawing filled circles (discs)

sidimok <[EMAIL PROTECTED]> writes:

> Well, let's take the one you've proposed the last time. How than can i 
> put a colorbar beside the plot?

Add in the imports

from matplotlib.colorbar import ColorbarBase, make_axes

and change the myscatter function to

def myscatter(ax, colormap, x, y, radii, colors):
for x1,y1,r,c in zip(x, y, radii, colormap(colors)):
ax.add_patch(Circle((x1,y1), r, fc=c))
cax, _ = make_axes(ax)
ColorbarBase(cax, cmap=colormap)

A better solution is probably to implement a CircleCollection similarly to the 
other collections.

--
Jouni K. Seppänen
http://www.iki.fi/jks


-
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) 
Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users