1
在Python中使用matplotlib我绘制了一个3D图形。当我旋转图表时,我注意到轴标签会自动交换,这看起来并不有趣或对我有帮助。事实上,这扰乱了我关注旋转的目的,即视觉上探索所呈现的数据。如何禁用matplotlib中轴标签的自动交换?
问:如何在matplotlib中旋转时禁用自动交换轴标签?
在Python中使用matplotlib我绘制了一个3D图形。当我旋转图表时,我注意到轴标签会自动交换,这看起来并不有趣或对我有帮助。事实上,这扰乱了我关注旋转的目的,即视觉上探索所呈现的数据。如何禁用matplotlib中轴标签的自动交换?
问:如何在matplotlib中旋转时禁用自动交换轴标签?
我抓住了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()
评论之前,我想这应该很容易把轴关闭使用pl.axis(“关”)或mpl_toolkits.mplot3d.set_axis_off(),但没有工作! – Developer