Re: [matplotlib-devel] Updating MPlot3D to a more recent matplotlib.

2009-03-08 Thread Reinier Heeres
Hi,

I've done some further refactoring of mplot3d:

- Almost all of the test plotting functions work, except for
test_bar2D. Filled contours are not perfect yet and need a bit more
work. Try "python axes.py" with the attached files to see how it
looks!

- I removed the Wrap2D class, which was using private class members
throughout. I replaced this approach with dynamically changing the
class type for Artist objects (e.g. PolyCollection to
Poly3DCollection). This is also a bit of voodoo, but I think in the
end it results in a bit less code, which is also more readable.

- Much more code could still be removed (and added again later if necessary)

Regards,
Reinier

BTW: I think plugging sympy's plotting functionality into matplotlib
would not be so easy! The mplot3d code is much better suited for
this...

On Thu, Mar 5, 2009 at 7:13 PM, Gael Varoquaux
 wrote:
> On Thu, Mar 05, 2009 at 07:03:00PM +0100, Cohen-Tanugi Johann wrote:
>> Nevertheless, I hate to think of matplotlib sending people to mayavi2 each
>> time 3D plotting is needed. Basic functionalities built-in would still be
>> highly desirable.
>
> Absolutely. I think we need basic 3D plotting functionnality that work
> without any 3D rendering library, both for robustess and for simplicity.
>
> I used to think different, because I believe that this approach is bound
> to fail on anything but very simple problems (my experience with gnuplot
> :>). I fear people are going to try and pull too far the simple 3D
> implementation.
>
> Nevertheless, it would be great to have some 3D in matplotlib, for easier
> mixing of 2D and 3D (I do this with Mayavi2 by saving to a temporary
> file, loading the result with matplotlib's imread, and displaying it with
> an imshow -- ugly!), and to have backend-universal, robust, 3D plotting.
>
> Gaël
>
> --
> Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
> -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
> -Strategies to boost innovation and cut costs with open source participation
> -Receive a $600 discount off the registration fee with the source code: SFAD
> http://p.sf.net/sfu/XcvMzF8H
> ___
> Matplotlib-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>



-- 
Reinier Heeres
Waalstraat 17
2515 XK Den Haag
The Netherlands

Tel: +31 6 10852639


mplot3d_20080309.tgz
Description: GNU Zip compressed data
--
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H___
Matplotlib-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Re: [matplotlib-devel] Updating MPlot3D to a more recent matplotlib.

2009-03-08 Thread Jonathan Taylor
Hi Reinier,

Awesome.  Those plots are making me smile! I also agree with your
refactoring and have applied your patch to my git repository.

I agree with you concerning the sympy plotting routines.  I think what
we have here is quite flexible and does a very good job of replicating
the equivalent functionality of MATLAB.  I think it would be a huge
effort trying to make 2D plots and 3D plots look consistent if another
approach was taken.  Indeed, this is a desirable characteristic.  In
addition, the code is actually very short and easy to maintain.  Given
that matplotlib has had trouble maintaining 3D code in the past, it
might not be a good idea to switch to a more complicated codebase.

You should grab some of my more recent changes as I have added a few
more fixes.  Most importantly, if you reuse the same figure, the old
event handlers will still attached preventing Axes objects from dieing
and causing interactive manipulation of the plots to be very sluggish.
 Also, in terms of performance, I have found that switching to TkAgg
from GTKAgg was helpful.

Also, I think the original code from John Porter was under a BSD
license.  I am thinking of adding our names and the BSD license to the
top of each file to protect it while its not officially part of
matplotlib.  What do you think?

Best,
Jonathan.

On Sun, Mar 8, 2009 at 8:04 PM, Reinier Heeres  wrote:
> Hi,
>
> I've done some further refactoring of mplot3d:
>
> - Almost all of the test plotting functions work, except for
> test_bar2D. Filled contours are not perfect yet and need a bit more
> work. Try "python axes.py" with the attached files to see how it
> looks!
>
> - I removed the Wrap2D class, which was using private class members
> throughout. I replaced this approach with dynamically changing the
> class type for Artist objects (e.g. PolyCollection to
> Poly3DCollection). This is also a bit of voodoo, but I think in the
> end it results in a bit less code, which is also more readable.
>
> - Much more code could still be removed (and added again later if necessary)
>
> Regards,
> Reinier
>
> BTW: I think plugging sympy's plotting functionality into matplotlib
> would not be so easy! The mplot3d code is much better suited for
> this...
>
> On Thu, Mar 5, 2009 at 7:13 PM, Gael Varoquaux
>  wrote:
>> On Thu, Mar 05, 2009 at 07:03:00PM +0100, Cohen-Tanugi Johann wrote:
>>> Nevertheless, I hate to think of matplotlib sending people to mayavi2 each
>>> time 3D plotting is needed. Basic functionalities built-in would still be
>>> highly desirable.
>>
>> Absolutely. I think we need basic 3D plotting functionnality that work
>> without any 3D rendering library, both for robustess and for simplicity.
>>
>> I used to think different, because I believe that this approach is bound
>> to fail on anything but very simple problems (my experience with gnuplot
>> :>). I fear people are going to try and pull too far the simple 3D
>> implementation.
>>
>> Nevertheless, it would be great to have some 3D in matplotlib, for easier
>> mixing of 2D and 3D (I do this with Mayavi2 by saving to a temporary
>> file, loading the result with matplotlib's imread, and displaying it with
>> an imshow -- ugly!), and to have backend-universal, robust, 3D plotting.
>>
>> Gaël
>>
>> --
>> Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
>> -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
>> -Strategies to boost innovation and cut costs with open source participation
>> -Receive a $600 discount off the registration fee with the source code: SFAD
>> http://p.sf.net/sfu/XcvMzF8H
>> ___
>> Matplotlib-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>
>
>
>
> --
> Reinier Heeres
> Waalstraat 17
> 2515 XK Den Haag
> The Netherlands
>
> Tel: +31 6 10852639
>
> --
> Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
> -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
> -Strategies to boost innovation and cut costs with open source participation
> -Receive a $600 discount off the registration fee with the source code: SFAD
> http://p.sf.net/sfu/XcvMzF8H
> ___
> Matplotlib-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>
>

--
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: 

Re: [matplotlib-devel] Updating MPlot3D to a more recent matplotlib.

2009-03-08 Thread Ondrej Certik
On Sun, Mar 8, 2009 at 7:45 PM, Jonathan Taylor
 wrote:
> Hi Reinier,
>
> Awesome.  Those plots are making me smile! I also agree with your
> refactoring and have applied your patch to my git repository.
>
> I agree with you concerning the sympy plotting routines.  I think what
> we have here is quite flexible and does a very good job of replicating
> the equivalent functionality of MATLAB.  I think it would be a huge
> effort trying to make 2D plots and 3D plots look consistent if another
> approach was taken.  Indeed, this is a desirable characteristic.  In
> addition, the code is actually very short and easy to maintain.  Given
> that matplotlib has had trouble maintaining 3D code in the past, it
> might not be a good idea to switch to a more complicated codebase.
>
> You should grab some of my more recent changes as I have added a few
> more fixes.  Most importantly, if you reuse the same figure, the old
> event handlers will still attached preventing Axes objects from dieing
> and causing interactive manipulation of the plots to be very sluggish.
>  Also, in terms of performance, I have found that switching to TkAgg
> from GTKAgg was helpful.
>
> Also, I think the original code from John Porter was under a BSD
> license.  I am thinking of adding our names and the BSD license to the
> top of each file to protect it while its not officially part of
> matplotlib.  What do you think?

A trivial patch is attached to make proj3d.py work.

I tried the examples and it looks great. However, it's pretty slow, at
least on my machine. The plotting in sympy is much faster. Is there
some way to make the mplot3d faster?

Ondrej
From b1a7c0b9c61257d3cbeda78d8aaffedae80396d4 Mon Sep 17 00:00:00 2001
From: Ondrej Certik 
Date: Sun, 8 Mar 2009 20:33:44 -0700
Subject: [PATCH] Make proj3d.py work by importing pylab

---
 proj3d.py |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/proj3d.py b/proj3d.py
index 4b39f10..e124e63 100644
--- a/proj3d.py
+++ b/proj3d.py
@@ -9,6 +9,7 @@ from matplotlib.collections import LineCollection
 from matplotlib.patches import Circle
 import numpy as np
 import numpy.linalg as linalg
+import pylab
 
 def _hide_cross(a,b):
 """
-- 
1.6.2

--
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H___
Matplotlib-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Re: [matplotlib-devel] Updating MPlot3D to a more recent matplotlib.

2009-03-08 Thread Jonathan Taylor
Hi,

Thanks for the patch.  How slow is it for you?  I find it slow but
quite usable.  The main problem, I imagine, is that sympy is using
OpenGL and thus your graphics card performs all the 3d -> 2d rendering
whereas we do much of this in python/numpy.  When I get a chance I am
going to see if I can somewhat speed some of it up by adding an
optional module to perform a few of these operations in C.

Jon.

On Sun, Mar 8, 2009 at 11:37 PM, Ondrej Certik  wrote:
> On Sun, Mar 8, 2009 at 7:45 PM, Jonathan Taylor
>  wrote:
>> Hi Reinier,
>>
>> Awesome.  Those plots are making me smile! I also agree with your
>> refactoring and have applied your patch to my git repository.
>>
>> I agree with you concerning the sympy plotting routines.  I think what
>> we have here is quite flexible and does a very good job of replicating
>> the equivalent functionality of MATLAB.  I think it would be a huge
>> effort trying to make 2D plots and 3D plots look consistent if another
>> approach was taken.  Indeed, this is a desirable characteristic.  In
>> addition, the code is actually very short and easy to maintain.  Given
>> that matplotlib has had trouble maintaining 3D code in the past, it
>> might not be a good idea to switch to a more complicated codebase.
>>
>> You should grab some of my more recent changes as I have added a few
>> more fixes.  Most importantly, if you reuse the same figure, the old
>> event handlers will still attached preventing Axes objects from dieing
>> and causing interactive manipulation of the plots to be very sluggish.
>>  Also, in terms of performance, I have found that switching to TkAgg
>> from GTKAgg was helpful.
>>
>> Also, I think the original code from John Porter was under a BSD
>> license.  I am thinking of adding our names and the BSD license to the
>> top of each file to protect it while its not officially part of
>> matplotlib.  What do you think?
>
> A trivial patch is attached to make proj3d.py work.
>
> I tried the examples and it looks great. However, it's pretty slow, at
> least on my machine. The plotting in sympy is much faster. Is there
> some way to make the mplot3d faster?
>
> Ondrej
>

--
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
___
Matplotlib-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Re: [matplotlib-devel] Updating MPlot3D to a more recent matplotlib.

2009-03-08 Thread Ondrej Certik
On Sun, Mar 8, 2009 at 9:01 PM, Jonathan Taylor
 wrote:
> Hi,
>
> Thanks for the patch.  How slow is it for you?  I find it slow but

Well, when I use mouse to rotate the image, I can see that it lags behind.

> quite usable.  The main problem, I imagine, is that sympy is using
> OpenGL and thus your graphics card performs all the 3d -> 2d rendering
> whereas we do much of this in python/numpy.  When I get a chance I am
> going to see if I can somewhat speed some of it up by adding an
> optional module to perform a few of these operations in C.

Why not to use OpenGL as well?

Ondrej

--
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
___
Matplotlib-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Re: [matplotlib-devel] Updating MPlot3D to a more recent matplotlib.

2009-03-08 Thread Jonathan Taylor
Just because we are using all the 2D drawing code to make the plots,
which is why the 3d code is so small, maintainable and is visually
consistent with 2D matplotlib.  I believe that moving to OpenGL would
require a substantial effort.

J

On Mon, Mar 9, 2009 at 12:17 AM, Ondrej Certik  wrote:
> On Sun, Mar 8, 2009 at 9:01 PM, Jonathan Taylor
>  wrote:
>> Hi,
>>
>> Thanks for the patch.  How slow is it for you?  I find it slow but
>
> Well, when I use mouse to rotate the image, I can see that it lags behind.
>
>> quite usable.  The main problem, I imagine, is that sympy is using
>> OpenGL and thus your graphics card performs all the 3d -> 2d rendering
>> whereas we do much of this in python/numpy.  When I get a chance I am
>> going to see if I can somewhat speed some of it up by adding an
>> optional module to perform a few of these operations in C.
>
> Why not to use OpenGL as well?
>
> Ondrej
>

--
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
___
Matplotlib-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel