Re: [matplotlib-devel] postscript backend: draw_markers
On 10/19/07, Darren Dale <[EMAIL PROTECTED]> wrote: > A while back I put in quite a bit of effort into enabling draw_markers in the > postscript backend. This is an efficient RendererPS function both in terms of > speed and file size, but it seems to not be used any more in favor of the > less efficient draw_polygon. Does anyone know why? Which artist is triggering this call? The RendererPS defines draw_markers, and this is the test Line2D uses to determine which function to call: self._newstyle = hasattr(renderer, 'draw_markers') thus newstyle will be True for PS. Then, in the Line2D marker drawing function, eg def _draw_square(...): if self._newstyle: path = agg.path_storage() path.move_to(-offset, -offset) path.line_to(-offset, offset) path.line_to(offset, offset) path.line_to(offset, -offset) path.end_poly() renderer.draw_markers(gc, path, rgbFace, xt, yt, self.get_transform()) else: so my guess is Line2D *is* using draw_markers for backend_ps. Patches.Polygon and derived will still be using the old draw_polygon, but there is no speed bottleneck here since one normally just adds a few Polygon instances manually (else use a Collection). The case we were trying to optimize with draw_markers was ax.plot(x, y, 'o') and related, where a 10,000 marker plot was triggering 10,000 calls to draw_polygon, and now triggers one call to draw_markers for backends that define it. Note that in Michael's branch, this is mostly moot. He has completely rewritten the transforms module in python and migrated to a path based drawing model, overhauling Line2D, Patch and Collections in the process.His branch is passing 75% or more of the examples and he is hammering away at the rest -- so far he has been concentrating on Agg but has recently begun the postscript work. It is will worth a look, as this will be merged back into the trunk, probably after the next major release. svn co https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/branches/transforms mgd JDH - This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ ___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
Re: [matplotlib-devel] postscript backend: draw_markers
On 10/19/07, Darren Dale <[EMAIL PROTECTED]> wrote: > I don't remember how to find the answer. It looks like scatter() creates > polygons, while plot() uses draw_markers: I see -- scatter uses collections, and the defaut Renderer implements PolygonCollection drawing through draw_polygon. This is correct, because draw_markers assumes homogeneous markers, and scatter implicitly assumes markers which vary in either size or shape (else just use plot). As for the alpha problem, I committed a change yesterday to fix alpha with the facecolor argument to scatter. Are you working off of the latest SVN? JDH - This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ ___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
Re: [matplotlib-devel] EPS output problem - scatter & edgecolors
On Friday 19 October 2007 03:57:31 am Manuel Metz wrote: > Now that alpha works with screen output, I recognized a problem with the > eps output. This is my little test script: > > import pylab > > x = pylab.npy.arange(0,10) > pylab.scatter(x,x, s=50, alpha=0.5) > pylab.scatter(x,x+0.5, facecolor='blue', edgecolor='red', s=50, alpha=0) > > pylab.savefig('alpha.png') > pylab.savefig('alpha.eps') > pylab.show() > > The resulting figures are attached. The problem occurs in the eps output > where the edgecolors are not correctly reproduced, only the first marker > symbol has a red edge, the others don't. I removed a gsave/grestore pair surrounding RendererPS._draw_ps in svn-3967. It looks like this fixed the problem (graphics state was being lost). I checked contour_demo.py for any unintended side-effects, and didn't find any, but please keep an eye out for strange behavior. Darren - This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ ___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
Re: [matplotlib-devel] postscript backend: draw_markers
Darren Dale wrote: > On Friday 19 October 2007 10:20:43 am John Hunter wrote: >> On 10/19/07, Darren Dale <[EMAIL PROTECTED]> wrote: >>> I don't remember how to find the answer. It looks like scatter() creates >>> polygons, while plot() uses draw_markers: >> I see -- scatter uses collections, and the defaut Renderer implements >> PolygonCollection drawing through draw_polygon. This is correct, >> because draw_markers assumes homogeneous markers, and scatter >> implicitly assumes markers which vary in either size or shape (else >> just use plot). >> >> As for the alpha problem, I committed a change yesterday to fix alpha >> with the facecolor argument to scatter. Are you working off of the >> latest SVN? > > I am. Here is the eps generated from the script in my previous email. For > scatter, alpha=0 causes the markers to not be drawn but not filled. For plot, > alpha=0 causes the markers to be drawn and filled. > > Also, scatter does not respect the marker shape when drawing the legend. I've seen this behavior before too and think that legend definitely needs to be fixed for scatter to draw markers with the correct shape rather than just colored rectangles ... Manuel > > > > > - > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > > > > > ___ > Matplotlib-devel mailing list > Matplotlib-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/matplotlib-devel - This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ ___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
Re: [matplotlib-devel] postscript backend: draw_markers
On Friday 19 October 2007 10:20:43 am John Hunter wrote: > On 10/19/07, Darren Dale <[EMAIL PROTECTED]> wrote: > > I don't remember how to find the answer. It looks like scatter() creates > > polygons, while plot() uses draw_markers: > > I see -- scatter uses collections, and the defaut Renderer implements > PolygonCollection drawing through draw_polygon. This is correct, > because draw_markers assumes homogeneous markers, and scatter > implicitly assumes markers which vary in either size or shape (else > just use plot). > > As for the alpha problem, I committed a change yesterday to fix alpha > with the facecolor argument to scatter. Are you working off of the > latest SVN? I am. Here is the eps generated from the script in my previous email. For scatter, alpha=0 causes the markers to not be drawn but not filled. For plot, alpha=0 causes the markers to be drawn and filled. Also, scatter does not respect the marker shape when drawing the legend. Darren <>- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
Re: [matplotlib-devel] updating a plot without calling plot
On Friday 19 October 2007 05:23:38 pm Darren Dale wrote: > I'm having some trouble updating a plot window without calling plot. I > would like to do something like: > > ax = axes() > lines, = plot([1,2,3], [1,2,3]) > lines.set_ydata([4,5,6]) > ax.autoscale_view() > ax.draw() > > The line does get updated, but the axes limits are not updated. I've looked > into the Axes.plot code, and as far as I can tell, the above code should > work. Can anyone tell me what is the right way to do this? I guess I should point out why I can't call plot. I'm rapidly losing physical memory, even when I call ax.hold(False): ax = axes() # ipython using 51 MB ax.plot(arange(100)) # ipython using 81 MB ax.hold(False) ax.plot(arange(100)) # ipython using 138 MB ax.plot(arange(100)) # ipython using 142 MB ax.hold(True) ax.plot(arange(100)) # ipython using 172 MB ax.plot(arange(100)) # ipython using 203 MB Darren - This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ ___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
[matplotlib-devel] updating a plot without calling plot
I'm having some trouble updating a plot window without calling plot. I would like to do something like: ax = axes() lines, = plot([1,2,3], [1,2,3]) lines.set_ydata([4,5,6]) ax.autoscale_view() ax.draw() The line does get updated, but the axes limits are not updated. I've looked into the Axes.plot code, and as far as I can tell, the above code should work. Can anyone tell me what is the right way to do this? Darren - This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ ___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
Re: [matplotlib-devel] EPS output problem - scatter & edgecolors
On Friday 19 October 2007 10:55:24 am John Hunter wrote: > On 10/19/07, Darren Dale <[EMAIL PROTECTED]> wrote: > > I removed a gsave/grestore pair surrounding RendererPS._draw_ps in > > svn-3967. It looks like this fixed the problem (graphics state was being > > lost). I checked contour_demo.py for any unintended side-effects, and > > didn't find any, but please keep an eye out for strange behavior. > > I added this gsave/grestore pair in draw_ps because in a first attempt > to get Ellipse working properly with axis='auto'. I was using an > approach inspired by Michael's branch, which is to create a unit > circle and then apply rotation and scaing transformation to make the > ellipse. The transformation settings were persistent so I wrapped all > of the draw_ps in a save/restore block to insulate them. > > Then I realized that doing the transformation in PS wreaks all kinds > of havoc with the linewidth settings, and reverted the code to doing > the transformations in python, as we have always done. So removing > the save/restore block should be fine, but file it away in the back of > your mind that pushing transformations in the current implementation > may result in unintended weirdness. Thanks for letting me know. When we first implemented draw_markers in backend_ps, we let the postscript interpretter do the transforms. That turned out to be a disaster. It took forever for ghostscript to render the images, so we went back to doing transforms in mpl. Darren - This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ ___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
Re: [matplotlib-devel] EPS output problem - scatter & edgecolors
On 10/19/07, Darren Dale <[EMAIL PROTECTED]> wrote: > I removed a gsave/grestore pair surrounding RendererPS._draw_ps in svn-3967. > It looks like this fixed the problem (graphics state was being lost). I > checked contour_demo.py for any unintended side-effects, and didn't find any, > but please keep an eye out for strange behavior. I added this gsave/grestore pair in draw_ps because in a first attempt to get Ellipse working properly with axis='auto'. I was using an approach inspired by Michael's branch, which is to create a unit circle and then apply rotation and scaing transformation to make the ellipse. The transformation settings were persistent so I wrapped all of the draw_ps in a save/restore block to insulate them. Then I realized that doing the transformation in PS wreaks all kinds of havoc with the linewidth settings, and reverted the code to doing the transformations in python, as we have always done. So removing the save/restore block should be fine, but file it away in the back of your mind that pushing transformations in the current implementation may result in unintended weirdness. JDH - This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ ___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
[matplotlib-devel] postscript backend: draw_markers
A while back I put in quite a bit of effort into enabling draw_markers in the postscript backend. This is an efficient RendererPS function both in terms of speed and file size, but it seems to not be used any more in favor of the less efficient draw_polygon. Does anyone know why? Darren - This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ ___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
[matplotlib-devel] bug in patches.py
There is a minor bug in line 852 in patches.py verbose.report('patches.Ellipse renderer ... This has to be mpl.verbose.report('patches.Ellipse renderer ... Manuel - This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ ___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
Re: [matplotlib-devel] postscript backend: draw_markers
On Friday 19 October 2007 09:21:45 am John Hunter wrote: > On 10/19/07, Darren Dale <[EMAIL PROTECTED]> wrote: > > A while back I put in quite a bit of effort into enabling draw_markers in > > the postscript backend. This is an efficient RendererPS function both in > > terms of speed and file size, but it seems to not be used any more in > > favor of the less efficient draw_polygon. Does anyone know why? > > Which artist is triggering this call? I don't remember how to find the answer. It looks like scatter() creates polygons, while plot() uses draw_markers: import pylab x = pylab.npy.arange(0,10) pylab.scatter(x,x, s=50, alpha=0.5) pylab.scatter(x,x+0.5, facecolor='blue', edgecolor='red', s=50, alpha=0) pylab.plot(x,x+1, 'o', mfc='blue', mec='red', ms=8, alpha=0) pylab.savefig('alpha.png') pylab.savefig('alpha.eps') pylab.show() Comparing the png and eps, it looks like there is some inconsistancy in the way scatter and plot ends up dealing with the alpha argument as well. Darren - This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ ___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel