2011-11-06 91 views
1

在Python中使用matplotlib我绘制了一个3D图形。当我旋转图表时,我注意到轴标签会自动交换,这看起来并不有趣或对我有帮助。事实上,这扰乱了我关注旋转的目的,即视觉上探索所呈现的数据。如何禁用matplotlib中轴标签的自动交换?

问:如何在matplotlib中旋转时禁用自动交换轴标签?

+0

评论之前,我想这应该很容易把轴关闭使用pl.axis(“关”)或mpl_toolkits.mplot3d.set_axis_off(),但没有工作! – Developer

回答

0

我抓住了SO的一些想法,检查了很多,最后开发了以下解决方案。它很简单。


from __future__ import division 
import scipy as sp 
import mpl_toolkits.mplot3d as a3d 
import pylab as pl 

nan = sp.nan 

def axesoff(): 
    box = [[-1,1,1,-1,-1,1,1,-1,-1,-1,nan,1,1,nan,1,1,nan,-1,-1], 
      [-1,-1,-1,-1,1,1,1,1,-1,-1,nan,-1,1,nan,1,-1,nan,1,1], 
      [-1,-1,1,1,1,1,-1,-1,-1,1,nan,-1,-1,nan,1,1,nan,-1,1]] 
    ax3.plot(*box,color='k') 
    for axis in (ax3.w_xaxis,ax3.w_yaxis,ax3.w_zaxis): 
     for obj in axis.get_ticklines(): obj.set_visible(False) 
     axis.set_ticklabels('') 
     axis.line.set_visible(False) 
     axis.pane.set_visible(False) 
    ax3.grid(False) 
    ax3.axis('equal') 

#------here we go 
x,y,z = sp.random.uniform(low=-1,high=1,size=(3,1000)) 
c = (x+1)+(y+1)+(z+1) 
s = c*10 
ax3 = a3d.Axes3D(pl.figure()) 
ax3.scatter(x,y,z,lw=0,s=s,c=c,alpha=0.5) 

axesoff() 

pl.show() 

enter image description here

相关问题