2014-01-15 1 views
3

3D 구형에서 샘플링하고 표시하고 싶습니다. plt.axis('equal') 명령에도 불구하고 구형이 아닌 타원형으로 보입니다. 여기 내 코드는 다음과 같습니다.구체처럼 보이는 구도를 그리시오

import numpy as np 
import matplotlib.pyplot as plt 

from mpl_toolkits.mplot3d import Axes3D 
def sphere_sampler(dimension=2,sample_size=1): 
    phi_1=np.random.uniform(low=0,high=np.pi,size=sample_size) 
    phi_2=np.random.uniform(low=0,high=2*np.pi,size=sample_size) 
    sample=np.empty((sample_size,dimension)) 
    sample[:,0]=np.cos(phi_1) 
    sample[:,1]=np.sin(phi_1)*np.cos(phi_2) 
    sample[:,2]=np.sin(phi_1)*np.sin(phi_2) 
    return sample 
pre_sample=sphere_sampler(3,1000) 
sample=pre_sample.reshape(pre_sample.shape[0],3) 
fig=plt.figure() 
ax = fig.gca(projection='3d') 
ax.scatter(sample[:,0],sample[:,1],sample[:,2]) 
ax.set_xlim(-1,1) 
ax.set_ylim(-1,1) 
ax.set_zlim(-1,1) 
plt.axis('equal') 
plt.show() 

어떤 부분이 잘못 되었습니까? 디스플레이에 문제가있는 것 같습니다. 스케일을 변경하지 않기 위해 어떻게 show() 메소드를 만들 수 있습니까?

답변

2

대신 plt.axis('equal'), 사용 :

ax.set_aspect("equal")