Re: [Matplotlib-users] deleting gray panels in Axes3D

2011-02-23 Thread Benjamin Root
On Wed, Feb 23, 2011 at 4:19 PM, Rene Breton superlumini...@gmail.comwrote:

 Hi all,

 I'm making a 3d plot using Axes3D (plot_surface) and I want to get rid
 of the 3d gray box that surrounds the object so that only the object
 shows up. Is there a way to do it? After creating my Axes3D instance, I
 can't find much else than methods to change the x,y,z labels and axis
 limits.

 I found a hack using myAXINFO to change the color of each panel but
 the axis line still remains there.

 Ideally, there would be methods to access the color, visibility, etc.,
 of these elements. Maybe it's somewhere I can't find them...


 Here's a code snippet derived from one of the website's examples:

 #
 from mpl_toolkits.mplot3d import Axes3D
 from matplotlib import cm
 from matplotlib.ticker import LinearLocator, FixedLocator,
 FormatStrFormatter
 import matplotlib.pyplot as plt
 import numpy as np

 fig = plt.figure()
 ax = fig.gca(projection='3d')
 X = np.arange(-5, 5, 0.25)
 Y = np.arange(-5, 5, 0.25)
 X, Y = np.meshgrid(X, Y)
 R = np.sqrt(X**2 + Y**2)
 Z = np.sin(R)
 surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet,
 linewidth=0, antialiased=False)
 ax.set_zlim3d(-1.01, 1.01)

 # The following makes the panels white, but the axis line remains there
 myAXINFO = { 'x': {'i': 0, 'tickdir': 1, 'juggled': (1, 0, 2), 'color':
 (1.0, 1.0, 1.0, 1.0, 1.0)}, 'y': {'i': 1, 'tickdir': 0, 'juggled': (0,
 1, 2), 'color': (1.0, 1.0, 1.0, 1.0, 1.0)}, 'z': {'i': 2, 'tickdir': 0,
 'juggled': (0, 2, 1), 'color': (1.0, 1.0, 1.0, 1.0, 1.0)} }
 ax.w_zaxis._AXINFO = myAXINFO
 ax.w_yaxis._AXINFO = myAXINFO
 ax.w_xaxis._AXINFO = myAXINFO

 plt.show()
 #


 Thanks!


 Rene



Rene,

Unfortunately, you have stumbled upon one of the ugliness of the mplot3d
implementation.  I am hoping to have more control available for the next
release.  But right now, there is no way to turn off the axes spines
(because they aren't implemented as spines).  If you really want to dig into
the source code, you could change the color argument to the Line2D call in
the init3d() method in matplotlib/lib/mpl_toolkits/axis3d.py

I am sorry I can not be more helpful.
Ben Root
--
Free Software Download: Index, Search  Analyze Logs and other IT data in 
Real-Time with Splunk. Collect, index and harness all the fast moving IT data 
generated by your applications, servers and devices whether physical, virtual
or in the cloud. Deliver compliance at lower cost and gain new business 
insights. http://p.sf.net/sfu/splunk-dev2dev ___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] deleting gray panels in Axes3D

2011-02-23 Thread Rene Breton
Thanks much for the quick answer Ben!

At least now I know it doesn't exist, yet. I might dig into the source 
code to change the color as you suggest. As a workaround, maybe I will 
simply tweak the .ps output in Adobe Illustrator; should be easy enough 
to remove such thing.

By the way, I'm very glad you (and people) took over the mplot3d. I 
really think that 3D plotting was the number one missing thing in 
Matplotlib and Python more generally. (mayavi2 is way to complicated and 
clunky for what most people need)

If I may make another suggestion, besides getting more control over the 
axes spines, it would be to allow the axes rendering to mix multiple 
plot objects. Let's say one plots a sphere and a cylinder (like a rod) 
that goes through the sphere and get the part of the cylinder that lies 
inside the sphere to be hidden. Of course, I realize it might not be 
trivial to do, depending exactly how plots are rendered.


Cheers,


Rene


On 11-02-23 05:33 PM, Benjamin Root wrote:
 On Wed, Feb 23, 2011 at 4:19 PM, Rene Breton superlumini...@gmail.com
 mailto:superlumini...@gmail.com wrote:

 Hi all,

 I'm making a 3d plot using Axes3D (plot_surface) and I want to get rid
 of the 3d gray box that surrounds the object so that only the object
 shows up. Is there a way to do it? After creating my Axes3D instance, I
 can't find much else than methods to change the x,y,z labels and axis
 limits.

 I found a hack using myAXINFO to change the color of each panel but
 the axis line still remains there.

 Ideally, there would be methods to access the color, visibility, etc.,
 of these elements. Maybe it's somewhere I can't find them...


 Here's a code snippet derived from one of the website's examples:

 #
 from mpl_toolkits.mplot3d import Axes3D
 from matplotlib import cm
 from matplotlib.ticker import LinearLocator, FixedLocator,
 FormatStrFormatter
 import matplotlib.pyplot as plt
 import numpy as np

 fig = plt.figure()
 ax = fig.gca(projection='3d')
 X = np.arange(-5, 5, 0.25)
 Y = np.arange(-5, 5, 0.25)
 X, Y = np.meshgrid(X, Y)
 R = np.sqrt(X**2 + Y**2)
 Z = np.sin(R)
 surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet,
  linewidth=0, antialiased=False)
 ax.set_zlim3d(-1.01, 1.01)

 # The following makes the panels white, but the axis line remains there
 myAXINFO = { 'x': {'i': 0, 'tickdir': 1, 'juggled': (1, 0, 2), 'color':
 (1.0, 1.0, 1.0, 1.0, 1.0)}, 'y': {'i': 1, 'tickdir': 0, 'juggled': (0,
 1, 2), 'color': (1.0, 1.0, 1.0, 1.0, 1.0)}, 'z': {'i': 2, 'tickdir': 0,
 'juggled': (0, 2, 1), 'color': (1.0, 1.0, 1.0, 1.0, 1.0)} }
 ax.w_zaxis._AXINFO = myAXINFO
 ax.w_yaxis._AXINFO = myAXINFO
 ax.w_xaxis._AXINFO = myAXINFO

 plt.show()
 #


 Thanks!


 Rene



 Rene,

 Unfortunately, you have stumbled upon one of the ugliness of the mplot3d
 implementation.  I am hoping to have more control available for the next
 release.  But right now, there is no way to turn off the axes spines
 (because they aren't implemented as spines).  If you really want to dig
 into the source code, you could change the color argument to the Line2D
 call in the init3d() method in matplotlib/lib/mpl_toolkits/axis3d.py

 I am sorry I can not be more helpful.
 Ben Root


--
Free Software Download: Index, Search  Analyze Logs and other IT data in 
Real-Time with Splunk. Collect, index and harness all the fast moving IT data 
generated by your applications, servers and devices whether physical, virtual
or in the cloud. Deliver compliance at lower cost and gain new business 
insights. http://p.sf.net/sfu/splunk-dev2dev 
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] deleting gray panels in Axes3D

2011-02-23 Thread Benjamin Root
On Wed, Feb 23, 2011 at 4:52 PM, Rene Breton superlumini...@gmail.comwrote:

 Thanks much for the quick answer Ben!

 At least now I know it doesn't exist, yet. I might dig into the source
 code to change the color as you suggest. As a workaround, maybe I will
 simply tweak the .ps output in Adobe Illustrator; should be easy enough
 to remove such thing.


Another issue may be the tickmarks, which are made separately in another
segment of code.


 By the way, I'm very glad you (and people) took over the mplot3d. I
 really think that 3D plotting was the number one missing thing in
 Matplotlib and Python more generally. (mayavi2 is way to complicated and
 clunky for what most people need)


Thank you for your vote of confidence.  This is exactly the intent of
mplot3d, which is to allow for the possibility of basic 3d plotting features
without the need to go all-in to a major 3d plotting system.  We are still
a long way from what I envision for mplot3d.


 If I may make another suggestion, besides getting more control over the
 axes spines, it would be to allow the axes rendering to mix multiple
 plot objects. Let's say one plots a sphere and a cylinder (like a rod)
 that goes through the sphere and get the part of the cylinder that lies
 inside the sphere to be hidden. Of course, I realize it might not be
 trivial to do, depending exactly how plots are rendered.


You are not the first to request this, and you will not be the last.
Unfortunately, it is an intractable problem that can never be completely
solved by the 2d rendering framework employed by matplotlib.  If/When
matplotlib gains an opengl backend, this problem will be revisited.

Please do continue to feel free to continue commenting on mplot3d and how
you think it can be better.  And, as always, patches are welcome!

Ben Root
--
Free Software Download: Index, Search  Analyze Logs and other IT data in 
Real-Time with Splunk. Collect, index and harness all the fast moving IT data 
generated by your applications, servers and devices whether physical, virtual
or in the cloud. Deliver compliance at lower cost and gain new business 
insights. http://p.sf.net/sfu/splunk-dev2dev ___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users