How to create some derived arrow classes with matplotlib and python
This is my OLD blog. I've copied this post over to my NEW blog at:
http://www.saltycrane.com/blog/2007/01/how-to-create-some-derived-arrow_03/
You should be redirected in 2 seconds.
Here is an example of how to create some derived arrow classes with matplotlib and python. The arrow() function in matplotlib accepts origin and delta x and delta y inputs. I changed this to polor coordinates so Arrow2 accepts the x and y coordinates of the origin, the length, and the angle. Then I created 4 classes derived from Arrow2 called ArrowRight, ArrowLeft, ArrowUp, and ArrowDown. These just set the angle for you to 0, 180, 90, and 270 respectively. Notice too that the **kwargs can be passed down so you can still set all the other parameters.
""" arrow_ex2.py """ from pylab import * def main(): figure() axes() Arrow2(.5,.5,.2,45) ArrowRight(.5,.5,.2) ArrowLeft(.5,.5,.2) ArrowUp(.5,.5,.2) ArrowDown(.5,.5,.2) show() class Arrow2: def __init__(self, x0, y0, length, angle=0.0, color='k', width=0.01, **kwargs): dx = length*cos(angle*pi/180) dy = length*sin(angle*pi/180) arrow (x0, y0, dx, dy, width=width, edgecolor=color, facecolor=color, antialiased=True, head_width=5*width, head_length=7.5*width, **kwargs) class ArrowRight(Arrow2): def __init__(self, x0, y0, length, **kwargs): Arrow2.__init__(self, x0, y0, length, angle=0.0, **kwargs) class ArrowLeft(Arrow2): def __init__(self, x0, y0, length, **kwargs): Arrow2.__init__(self, x0, y0, length, angle=180.0, **kwargs) class ArrowUp(Arrow2): def __init__(self, x0, y0, length, **kwargs): Arrow2.__init__(self, x0, y0, length, angle=90.0, **kwargs) class ArrowDown(Arrow2): def __init__(self, x0, y0, length, **kwargs): Arrow2.__init__(self, x0, y0, length, angle=270.0, **kwargs) if __name__ == "__main__": main()
No comments:
Post a Comment