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