On Sun, Apr 11, 2010 at 7:15 AM, tomislav_ma...@gmx.com <tomislav.ma...@gmx.com> wrote: > can someone help me to plot a polygon in matplotlib? > > I have been reading about the axes.patches.Polygon class and I have defined > the > > Polygon object that has a preset lw and points. How do I plot it? > > I'm confused because the Axes documentation states that this class holds > most of > > the figure objects like Rectangle, Line2D, and then the website states that > the Line2D > > is a return object from the plt.plot() invocation.
Yes, Axes.plot is a helper function which creates a Line2D object, adds it to the axes, sets the transformation, etc... This process is covered in some detail in the matplotlib Artist tutorial http://matplotlib.sourceforge.net/users/artists.html and in the advanced matplotlib tutorial at scipy -- video available here http://www.archive.org/details/scipy09_advancedTutorialDay1_3 > What if I create my own > set of Rectangle > > (Polygon) objects and want to create a list of them and plot them? If you create your own polygons/rectangles/patches, create them, and then add them with Axes.add_patch http://matplotlib.sourceforge.net/api/axes_api.html#matplotlib.axes.Axes.add_patch If you want to create a bunch of them, consider a PolygonCollection (or a RegularPolygonCollection depending on your use case) http://matplotlib.sourceforge.net/api/collections_api.html http://matplotlib.sourceforge.net/search.html?q=codex+PolyCollection > Also, I'm using this sequence of commands to work in OO mode interactively > > (just to learn) but when I execute plt.draw() no figure appears. We make a distinction between raising a figure (plt.show) and rendering to an existing figure (plt.draw). In interactive mode (which is what ipython -pylab turns on) figures are automatically raised/shown. You can control these settings from a regular python shell using ion and ioff. See http://matplotlib.sourceforge.net/users/shell.html Here is a complete example:: import matplotlib.patches as patches import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) verts = [0,0], [0,1], [1,1], [1,0] poly = patches.Polygon(verts) ax.add_patch(poly) ax.set_xlim(-2,2) ax.set_ylim(-2,2) plt.show() Hope this helps, JDH ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users