Re: [matplotlib-devel] postscript backend: draw_markers

2007-10-19 Thread John Hunter
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

2007-10-19 Thread John Hunter
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

2007-10-19 Thread Darren Dale
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

2007-10-19 Thread Manuel Metz


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

2007-10-19 Thread Darren Dale
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

2007-10-19 Thread Darren Dale
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

2007-10-19 Thread Darren Dale
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

2007-10-19 Thread Darren Dale
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

2007-10-19 Thread John Hunter
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

2007-10-19 Thread Darren Dale
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

2007-10-19 Thread Manuel Metz
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

2007-10-19 Thread Darren Dale
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