SourceForge logo
SourceForge logo
Menu

matplotlib-devel — matplotlib developers

You can subscribe to this list here.

2003 Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
(1)
Nov
(33)
Dec
(20)
2004 Jan
(7)
Feb
(44)
Mar
(51)
Apr
(43)
May
(43)
Jun
(36)
Jul
(61)
Aug
(44)
Sep
(25)
Oct
(82)
Nov
(97)
Dec
(47)
2005 Jan
(77)
Feb
(143)
Mar
(42)
Apr
(31)
May
(93)
Jun
(93)
Jul
(35)
Aug
(78)
Sep
(56)
Oct
(44)
Nov
(72)
Dec
(75)
2006 Jan
(116)
Feb
(99)
Mar
(181)
Apr
(171)
May
(112)
Jun
(86)
Jul
(91)
Aug
(111)
Sep
(77)
Oct
(72)
Nov
(57)
Dec
(51)
2007 Jan
(64)
Feb
(116)
Mar
(70)
Apr
(74)
May
(53)
Jun
(40)
Jul
(519)
Aug
(151)
Sep
(132)
Oct
(74)
Nov
(282)
Dec
(190)
2008 Jan
(141)
Feb
(67)
Mar
(69)
Apr
(96)
May
(227)
Jun
(404)
Jul
(399)
Aug
(96)
Sep
(120)
Oct
(205)
Nov
(126)
Dec
(261)
2009 Jan
(136)
Feb
(136)
Mar
(119)
Apr
(124)
May
(155)
Jun
(98)
Jul
(136)
Aug
(292)
Sep
(174)
Oct
(126)
Nov
(126)
Dec
(79)
2010 Jan
(109)
Feb
(83)
Mar
(139)
Apr
(91)
May
(79)
Jun
(164)
Jul
(184)
Aug
(146)
Sep
(163)
Oct
(128)
Nov
(70)
Dec
(73)
2011 Jan
(235)
Feb
(165)
Mar
(147)
Apr
(86)
May
(74)
Jun
(118)
Jul
(65)
Aug
(75)
Sep
(162)
Oct
(94)
Nov
(48)
Dec
(44)
2012 Jan
(49)
Feb
(40)
Mar
(88)
Apr
(35)
May
(52)
Jun
(69)
Jul
(90)
Aug
(123)
Sep
(112)
Oct
(120)
Nov
(105)
Dec
(116)
2013 Jan
(76)
Feb
(26)
Mar
(78)
Apr
(43)
May
(61)
Jun
(53)
Jul
(147)
Aug
(85)
Sep
(83)
Oct
(122)
Nov
(18)
Dec
(27)
2014 Jan
(58)
Feb
(25)
Mar
(49)
Apr
(17)
May
(29)
Jun
(39)
Jul
(53)
Aug
(52)
Sep
(35)
Oct
(47)
Nov
(110)
Dec
(27)
2015 Jan
(50)
Feb
(93)
Mar
(96)
Apr
(30)
May
(55)
Jun
(83)
Jul
(44)
Aug
(8)
Sep
(5)
Oct
Nov
(1)
Dec
(1)
2016 Jan
Feb
Mar
(1)
Apr
May
Jun
(2)
Jul
Aug
(3)
Sep
(1)
Oct
(3)
Nov
Dec
2017 Jan
Feb
(5)
Mar
Apr
May
Jun
Jul
(3)
Aug
Sep
(7)
Oct
Nov
Dec
2018 Jan
Feb
Mar
Apr
May
Jun
Jul
(2)
Aug
Sep
Oct
Nov
Dec
S M T W T F S

1
2
(2)
3
(3)
4
(2)
5
(2)
6
(4)
7
(2)
8
(5)
9
(1)
10
(6)
11
(1)
12
(6)
13
(1)
14
15
16
(2)
17
(3)
18
(13)
19
(3)
20
(2)
21
22
(8)
23
(4)
24
(5)
25
(3)
26
(3)
27
(1)
28
(1)






Showing 3 results of 3

From: Nicolas R. <Nic...@lo...> - 2010年02月26日 14:57:01
If that may help the discussion, here are two links related to works I did on Python/OpenGL/scientific visualization and matplotlib:
glumpy: http://code.google.com/p/glumpy/
scigl: http://www.loria.fr/~rougier/coding/scigl/index.html
I also tried to write an OpenGL matplolib backend but it was not very convincing in terms of speed. This was the reason why I headed for glumpy. I think OpenGL may be a good framework for realtime visualization but is far from ideal to have paper quality output like the Agg backend. However, there exist a GL2PS (or pdf, svg, etc) library that may offer a very good compromise. Furthemore, there is no native way to display text even if FTGL is relatively widespread now.
Concerning threading and OpenGL, it might be a bit more complex than other backends since (from what I've understood), OpenGL requires to be in the main thread, this means no OpenGL call from other threads. I managed to implement an interactive console in glumpy using the GLUT system, and had some good experience with GTK as well but I don't know how it may work with qt or wx for example.
Nicolas
On Feb 26, 2010, at 05:16 , Jonathan Taylor wrote:
> Hi,
> 
> I cannot answer your questions specifically but perhaps I can provide some insight. My current understanding is that most of mplot3d is a bit of a hack. I say this because I use it daily and I was the one who hacked it into a half working state out of necessity after it was originally fell out repair. Reiner finished the job in terms of returning it to its original usability.
> 
> Unfortunately, it still has many warts. Part of the problem is that matplotlib continues to evolve and add features that we have not added to mplot3d. I think that part of the reason this is happening is because it is not easily apparent what works and what does not. Indeed, the classes in mplot3d such as axes3d, axis3d, etc inherit from the mainline 2d classes axes, axis, etc. Thus it appears that methods have been implemented simply because the 3d objects have inherited them. This just gets worse as the 2d classes add more features. This causes a lot of frustration for users as sometimes these methods work by fluke and sometimes don't. Even worse is that it is possible for an addition to some 2D code to call a method that has not been masked in the 3D object causing a breakage.
> 
> The reason this happened in the first place is that the original author realized that a lot of the 2d code could be reused to render a 2d view of the 3d space. I think that this reuse is a good idea but I think it would be much better if this was done more explicitly instead of using inheritance. In particular, I think that Axes3D should not inherit from Axes and simply contain an Axes object stored in self.axes. Then each method that is actually supported can be explicitly written and appropriately proxied to self.axes.method.
> 
> I have been thinking about trying to do a rewrite as I describe above for some time. I think that this would not only make it easier for users but would make a much clearer code base in which it was more obvious how someone could contribute. Alas, I have not found the time to do this, but perhaps in a month. ;)
> 
> The other issue is that of speed. In the longer term, that can be addressed more easily. It will be a lot more work and more complicated but I am guessing that what needs to be done is a complete rewrite in something like OpenGL. That said, I am not sure how well this would work and if there are complications with ipython and threading, etc. I would be interested to know what people think about this.
> 
> I realize that I did not answer your questions except to provide some insight as to why mplot3d behaves oddly sometimes. Sorry ;)
> 
> Best,
> Jonathan.
> 
> 
> On Thu, Feb 25, 2010 at 12:14 PM, Ben Axelrod <BAx...@co...> wrote:
> Hi Reinier,
> 
> Here are a number of issues in mplot3d that I would really like fixed, but can't quite figure out. I would very much appreciate some feedback from you on these. (Where to start, what might be the cause, how hard is the fix...)
> 
> * Global 3d object sorting. Not just for polygons, but all 3d objects like lines, and text as well. These objects have z values after all, so should be able to be placed in some sort of global z buffer. 
> 
> * When I implement 'picking' for bar3d plots, how can I know which bar was picked? In the picker callback, the event.artist is a Poly3DCollection object. I can call event.artist.get_paths() to get all the polygon paths, and determine which one the mouse click was in. But this data does not have any 'z' data. So, this will find 2 faces for the box you clicked. (You may get many more results from other boxes as well). And even with this data, I am unable to determine which box the path corresponds to. I can think of a few solutions:
> - Store some kind of data in Poly3DCollection corresponding to all path polygons, *with* the real world data so they can be matched up. (maybe this is already the case?)
> - make some kind of Bar3DPath class that inherits from Path which contains an extra data field to store the index of the bar the path belongs to. It should probably also store the real world coordinates and the screen z value as well.
> - override some pick event method and do this logic in the mplot3d code so that the user's picker callback can simply use event.ind to get the bar index that was picked. just like the pick event for scatter().
> 
> * picking does not seem to work for the 3D axis labels. The normal 'picker=True' parameter of set_xlabel(), set_ylabel() , and set_zlabel() does not seem to make the axis label pickable. Other 2d and 3d text on the plot is pickable however. It may be possible that the Axis3D object does not add the label to the Axes3D's list of artists. Which means it doesn't get searched for and found in Axes.__pick().
> 
> * Is it possible to make 3d bars with transparent faces, so that they appear wireframe? I am pretty sure that patches support this, but I think the fancy face coloring bar3d does overrides the 'none' color specification.
> 
> * How can I set axis tick label properties for 3D axes? This code does not work on Axes3D, but it works for normal 2D axes: setp(ax.get_xticklabels(), color='r'). Furthermore, there is no such ax.get_zticklabels(). Is there another way that this must be done? How can we support the setp(ax.get_zticklabels(), color='r') paradigm?
> 
> Thanks!
> -Ben
> 
> 
> Ben Axelrod
> Robotics Engineer
> (800) 641-2676 x737
> 
> www.coroware.com
> www.corobot.net
> 
> 
> ------------------------------------------------------------------------------
> Download Intel&#174; 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-devel mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
> 
> 
> ------------------------------------------------------------------------------
> Download Intel&#174; 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-devel mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
From: Jonathan T. <jt...@cs...> - 2010年02月26日 05:23:43
Ben.
Sorry I did not see the other posts surrounding mplot3d or your patch. I am
very excited to have that though. Thank you.
My opinion about a redesign still stands though.
Jon.
On Thu, Feb 25, 2010 at 11:16 PM, Jonathan Taylor <jt...@cs...>wrote:
> Hi,
>
> I cannot answer your questions specifically but perhaps I can provide some
> insight. My current understanding is that most of mplot3d is a bit of a
> hack. I say this because I use it daily and I was the one who hacked it
> into a half working state out of necessity after it was originally fell out
> repair. Reiner finished the job in terms of returning it to its original
> usability.
>
> Unfortunately, it still has many warts. Part of the problem is that
> matplotlib continues to evolve and add features that we have not added to
> mplot3d. I think that part of the reason this is happening is because it is
> not easily apparent what works and what does not. Indeed, the classes in
> mplot3d such as axes3d, axis3d, etc inherit from the mainline 2d classes
> axes, axis, etc. Thus it appears that methods have been implemented simply
> because the 3d objects have inherited them. This just gets worse as the 2d
> classes add more features. This causes a lot of frustration for users as
> sometimes these methods work by fluke and sometimes don't. Even worse is
> that it is possible for an addition to some 2D code to call a method that
> has not been masked in the 3D object causing a breakage.
>
> The reason this happened in the first place is that the original author
> realized that a lot of the 2d code could be reused to render a 2d view of
> the 3d space. I think that this reuse is a good idea but I think it would
> be much better if this was done more explicitly instead of using
> inheritance. In particular, I think that Axes3D should not inherit from
> Axes and simply contain an Axes object stored in self.axes. Then each
> method that is actually supported can be explicitly written and
> appropriately proxied to self.axes.method.
>
> I have been thinking about trying to do a rewrite as I describe above for
> some time. I think that this would not only make it easier for users but
> would make a much clearer code base in which it was more obvious how someone
> could contribute. Alas, I have not found the time to do this, but perhaps
> in a month. ;)
>
> The other issue is that of speed. In the longer term, that can be
> addressed more easily. It will be a lot more work and more complicated but
> I am guessing that what needs to be done is a complete rewrite in something
> like OpenGL. That said, I am not sure how well this would work and if there
> are complications with ipython and threading, etc. I would be interested to
> know what people think about this.
>
> I realize that I did not answer your questions except to provide some
> insight as to why mplot3d behaves oddly sometimes. Sorry ;)
>
> Best,
> Jonathan.
>
>
> On Thu, Feb 25, 2010 at 12:14 PM, Ben Axelrod <BAx...@co...>wrote:
>
>> Hi Reinier,
>>
>> Here are a number of issues in mplot3d that I would really like fixed, but
>> can't quite figure out. I would very much appreciate some feedback from you
>> on these. (Where to start, what might be the cause, how hard is the fix...)
>>
>> * Global 3d object sorting. Not just for polygons, but all 3d objects
>> like lines, and text as well. These objects have z values after all, so
>> should be able to be placed in some sort of global z buffer.
>>
>> * When I implement 'picking' for bar3d plots, how can I know which bar
>> was picked? In the picker callback, the event.artist is a Poly3DCollection
>> object. I can call event.artist.get_paths() to get all the polygon paths,
>> and determine which one the mouse click was in. But this data does not have
>> any 'z' data. So, this will find 2 faces for the box you clicked. (You may
>> get many more results from other boxes as well). And even with this data, I
>> am unable to determine which box the path corresponds to. I can think of a
>> few solutions:
>> - Store some kind of data in Poly3DCollection corresponding to all path
>> polygons, *with* the real world data so they can be matched up. (maybe this
>> is already the case?)
>> - make some kind of Bar3DPath class that inherits from Path which
>> contains an extra data field to store the index of the bar the path belongs
>> to. It should probably also store the real world coordinates and the screen
>> z value as well.
>> - override some pick event method and do this logic in the mplot3d code
>> so that the user's picker callback can simply use event.ind to get the bar
>> index that was picked. just like the pick event for scatter().
>>
>> * picking does not seem to work for the 3D axis labels. The normal
>> 'picker=True' parameter of set_xlabel(), set_ylabel() , and set_zlabel()
>> does not seem to make the axis label pickable. Other 2d and 3d text on the
>> plot is pickable however. It may be possible that the Axis3D object does not
>> add the label to the Axes3D's list of artists. Which means it doesn't get
>> searched for and found in Axes.__pick().
>>
>> * Is it possible to make 3d bars with transparent faces, so that they
>> appear wireframe? I am pretty sure that patches support this, but I think
>> the fancy face coloring bar3d does overrides the 'none' color specification.
>>
>> * How can I set axis tick label properties for 3D axes? This code does
>> not work on Axes3D, but it works for normal 2D axes: setp(ax.get_xticklabels(),
>> color='r'). Furthermore, there is no such ax.get_zticklabels(). Is there
>> another way that this must be done? How can we support the setp(ax.get_zticklabels(),
>> color='r') paradigm?
>>
>> Thanks!
>> -Ben
>>
>>
>> *Ben Axelrod*
>> Robotics Engineer
>> (800) 641-2676 x737
>> www.coroware.com
>> www.corobot.net
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Download Intel&#174; 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-devel mailing list
>> Mat...@li...
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>
>>
>
From: Jonathan T. <jt...@cs...> - 2010年02月26日 04:17:08
Hi,
I cannot answer your questions specifically but perhaps I can provide some
insight. My current understanding is that most of mplot3d is a bit of a
hack. I say this because I use it daily and I was the one who hacked it
into a half working state out of necessity after it was originally fell out
repair. Reiner finished the job in terms of returning it to its original
usability.
Unfortunately, it still has many warts. Part of the problem is that
matplotlib continues to evolve and add features that we have not added to
mplot3d. I think that part of the reason this is happening is because it is
not easily apparent what works and what does not. Indeed, the classes in
mplot3d such as axes3d, axis3d, etc inherit from the mainline 2d classes
axes, axis, etc. Thus it appears that methods have been implemented simply
because the 3d objects have inherited them. This just gets worse as the 2d
classes add more features. This causes a lot of frustration for users as
sometimes these methods work by fluke and sometimes don't. Even worse is
that it is possible for an addition to some 2D code to call a method that
has not been masked in the 3D object causing a breakage.
The reason this happened in the first place is that the original author
realized that a lot of the 2d code could be reused to render a 2d view of
the 3d space. I think that this reuse is a good idea but I think it would
be much better if this was done more explicitly instead of using
inheritance. In particular, I think that Axes3D should not inherit from
Axes and simply contain an Axes object stored in self.axes. Then each
method that is actually supported can be explicitly written and
appropriately proxied to self.axes.method.
I have been thinking about trying to do a rewrite as I describe above for
some time. I think that this would not only make it easier for users but
would make a much clearer code base in which it was more obvious how someone
could contribute. Alas, I have not found the time to do this, but perhaps
in a month. ;)
The other issue is that of speed. In the longer term, that can be addressed
more easily. It will be a lot more work and more complicated but I am
guessing that what needs to be done is a complete rewrite in something like
OpenGL. That said, I am not sure how well this would work and if there are
complications with ipython and threading, etc. I would be interested to
know what people think about this.
I realize that I did not answer your questions except to provide some
insight as to why mplot3d behaves oddly sometimes. Sorry ;)
Best,
Jonathan.
On Thu, Feb 25, 2010 at 12:14 PM, Ben Axelrod <BAx...@co...> wrote:
> Hi Reinier,
>
> Here are a number of issues in mplot3d that I would really like fixed, but
> can't quite figure out. I would very much appreciate some feedback from you
> on these. (Where to start, what might be the cause, how hard is the fix...)
>
> * Global 3d object sorting. Not just for polygons, but all 3d objects
> like lines, and text as well. These objects have z values after all, so
> should be able to be placed in some sort of global z buffer.
>
> * When I implement 'picking' for bar3d plots, how can I know which bar was
> picked? In the picker callback, the event.artist is a Poly3DCollection
> object. I can call event.artist.get_paths() to get all the polygon paths,
> and determine which one the mouse click was in. But this data does not have
> any 'z' data. So, this will find 2 faces for the box you clicked. (You may
> get many more results from other boxes as well). And even with this data, I
> am unable to determine which box the path corresponds to. I can think of a
> few solutions:
> - Store some kind of data in Poly3DCollection corresponding to all path
> polygons, *with* the real world data so they can be matched up. (maybe this
> is already the case?)
> - make some kind of Bar3DPath class that inherits from Path which
> contains an extra data field to store the index of the bar the path belongs
> to. It should probably also store the real world coordinates and the screen
> z value as well.
> - override some pick event method and do this logic in the mplot3d code so
> that the user's picker callback can simply use event.ind to get the bar
> index that was picked. just like the pick event for scatter().
>
> * picking does not seem to work for the 3D axis labels. The normal
> 'picker=True' parameter of set_xlabel(), set_ylabel() , and set_zlabel()
> does not seem to make the axis label pickable. Other 2d and 3d text on the
> plot is pickable however. It may be possible that the Axis3D object does not
> add the label to the Axes3D's list of artists. Which means it doesn't get
> searched for and found in Axes.__pick().
>
> * Is it possible to make 3d bars with transparent faces, so that they
> appear wireframe? I am pretty sure that patches support this, but I think
> the fancy face coloring bar3d does overrides the 'none' color specification.
>
> * How can I set axis tick label properties for 3D axes? This code does
> not work on Axes3D, but it works for normal 2D axes: setp(ax.get_xticklabels(),
> color='r'). Furthermore, there is no such ax.get_zticklabels(). Is there
> another way that this must be done? How can we support the setp(ax.get_zticklabels(),
> color='r') paradigm?
>
> Thanks!
> -Ben
>
>
> *Ben Axelrod*
> Robotics Engineer
> (800) 641-2676 x737
> www.coroware.com
> www.corobot.net
>
>
>
> ------------------------------------------------------------------------------
> Download Intel&#174; 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-devel mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>
>

Showing 3 results of 3

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /