如何在matplotlib中禁用轴标签中的自动交换?

时间:2011-11-06 10:17:16

标签: python matplotlib

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

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

1 个答案:

答案 0 :(得分: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