On Friday 04 January 2008 02:36:06 pm Ondrej Certik wrote:
> On Jan 4, 2008 8:19 PM, Fernando Perez <[EMAIL PROTECTED]> wrote:
> > On Jan 4, 2008 11:55 AM, Ondrej Certik <[EMAIL PROTECTED]> wrote:
> > > > > * Agg (this could be optional)
> > > >
> > > > On the transforms branch, Agg is used for bezier curve realisation,
> > > > whether the Agg renderer is being used or not.  This is used for
> > > > things like hit-testing and range-setting of path collections etc. 
> > > > This was not fast enough in my earlier numpy-based implementation,
> > > > since to take advantage of numpy, you generally have to allocate lots
> > > > of memory to store the results in.  In this particular case, each
> > > > value can be immediately thrown away, so all that extra work was
> > > > unnecessary.
> > >
> > > So it's needed for path collections - what is that? When I want to do
> > > regular plots,
> > > like plotting some set of points, is that needed too? If not, it
> > > should be optional imho.
> >
> > It's probably worth mentioning that one of the reasons John chose Agg
> > is because of image *quality* concerns.  If I'm not mistaken (John and
> > A. Straw will correct me as needed), the OpenGL anti-aliasing quality
> > is positively horrible when you compare it to the quality of Agg.
> > Keep in mind that OpenGL is typically focused on keeping high
> > frame-rates for moving images, so pixel-perfect antialiasing is much
> > less of a concern for them, since your eye is a lot less likely to
> > notice such fine details (as long as there is *some* antialiasing).
> > For a static image, you tend to be a lot pickier, and Agg goes to
> > great lengths to ensure the best possible antialiasing quality.  This
> > is part of the reason why normal television, at abysmally low
> > resolutions is still acceptable for viewing, while nobody would
> > consider a 400-line-image an acceptable photograph for most uses.  You
> > 'stare' at the moving image only for 1/30 s or so, while you look at
> > the static one for much longer.
> >
> > Just look at some of their examples to get an idea of what I'm talking
> > about:
> >
> > http://www.antigrain.com/screenshots/index.html
> >
> > I've never seen any opengl-based antialiasing be of that quality.  But
> > there may be ways of achieving the same thing in OpenGL, I don't know
> > (and to do so efficiently and portably, without requiring specific
> > video cards).
> >
> > The other issue I recall is that the quality of openGL antialiasing is
> > highly dependent on the video card and/or driver.  While that may be
> > OK for gamers, it's completely unacceptable IMO for scientific
> > publication.
> >
> > > > > Compiling really sucks.
> >
> > Keep in mind that while python+cleverness can get you a lot of speed,
> > there are operations that are *inescapably* slow in python's fully
> > dynamic model today (without JIT-type tricks a la psyco that avoid
> > dynamic dispatch in loops).  Running a tight loop over a million
> > elements of anything to do some repetitive operation will incur in
> > Python's runtime check costs on every pass of the loop.  In a plotting
> > library, this type of computation is very frequent, and while some of
> > it can be rolled into numpy-type array operations, that's not always
> > possible.  There's simply no way out (today) from compiled code for
> > certain things in python, I'm afraid.  Keep in mind that there are
> > still people who regularly complain about MPL being *too slow* for
> > their purposes, which involve interactive data exploration of enormous
> > datasets.  I'm sure that loss of speed would not be considered a
> > desirable feature for a new MPL release by many :)
> >
> > I'm certainly hoping you guys can find some mechanism to join forces
> > on this front, which I would absolutely love to see.  But I just want
> > to provide a bit of context as to why MPL uses extensions like Agg and
> > relies on compiled code, which is I think a fairly critical need of
> > the project.
> >
> > Having said all this, I'd be thrilled to be proven 100% wrong in all
> > of the above, and to see a pure-python MPL that is as fast as today's
> > and maintains the image quality we have today.
> >
> > One approach that has been thrown around in the past was to have an
> > opengl based render while working interactively, that would force a
> > re-render of the same entire scene via Agg for image saving. I don't
> > know enough about the MPL internals to say how feasible this would be.
>
> Hi Fernando!
>
> what you said are valid points for matplotlib using Agg as a backend.
> And as I said,
> the default matplotlib installation should include it, no doubt about that.
>
> On the other hand, I (and I think many other users) only need the super
> quality only when saving the final plot. Of course, if it's worth the pain,
> I can install the agg
> backend and have the quality all the time, but many users will
> sacrifice the quality,
> if they can get at least some plot.
>
> If it was just me, I use Debian, so for me using any C compiled code
> is zero pain. But,
> the majority of users of sympy, are probably windows users. (At least there
> are more downloads of the windows installer, than the mulitplatform
> tarball). And I am not sure compiling anything on windows is a pleasant
> experience (honestly I
> think forcing a user of sympy compiling something on windows is a show
> stopper).

Why would your users have to compile anything on windows? Matplotlib's windows 
users just run the installer, the compilation has already been done. Am I 
missing something?

Darren

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

Reply via email to