2012-09-06 6 views
3

matplotlib를 사용하여 여러 개의 와이어 프레임 구로 구성된 플롯을 작성하려고합니다. 하나의 구와 같은 코드 구를 찾았으므로 plot_wireframe을 여러 번 호출하여 여러 구로 확장하는 것이 쉬울 것이라고 생각했습니다. here 내가 틀렸어. 여기의 코드는 다음과 같습니다Python matplotlib 와이어 프레임 왜곡

import matplotlib.pyplot as plt 
import numpy as np 
from mpl_toolkits.mplot3d import Axes3D 
u, v = np.mgrid[0:2*np.pi:20j, 0:np.pi:10j] 
x=np.cos(u)*np.sin(v) 
y=np.sin(u)*np.sin(v) 
z=np.cos(v) 
fig = plt.figure(figsize=(8,6)) 
ax = fig.gca(projection='3d') 
ax.plot_wireframe(x*3.+5., y*3., z*3.,linewidths=.2) 
ax.view_init(azim=30,elev=40) 
ax.set_aspect("equal") 
plt.show() 
fig = plt.figure(figsize=(8,6)) 
ax = fig.gca(projection='3d') 
ax.plot_wireframe(x*3.+5., y*3., z*3.,linewidths=.2) 
spheres = [ [0,0,0,1], [3,0,0,1.6] ] 
for v in spheres: 
    ax.plot_wireframe(x*v[3]+v[0], y*v[3]+v[1], z*v[3]+v[2],linewidths=.2) 
ax.view_init(azim=30,elev=40) 
ax.set_aspect("equal") 
plt.show() 

당신이 코드를 실행하면 두 번째에있는 모든 구체 왜곡하고 이동하는 동안, 첫 번째 음모, 멋진 영역을 표시합니다. plot_wireframe이 같은 축에서 여러 번 호출 될 수 있지만 아무것도 찾을 수 없었는지 확인하기 위해 검색했습니다. 또한, 저는 파이썬 놈입니다.하지만 제가 잘못하고 있다고 생각하지 않습니다. 도움 주셔서 감사합니다!

답변

1

짧은 답변 : 수동 축 제한을 조정합니다

import matplotlib.pyplot as plt 
import numpy as np 
from mpl_toolkits.mplot3d import Axes3D 
u, v = np.mgrid[0:2*np.pi:20j, 0:np.pi:10j] 
x=np.cos(u)*np.sin(v) 
y=np.sin(u)*np.sin(v) 
z=np.cos(v) 

# I'm not sure what was this for. 
''' 
fig = plt.figure(figsize=(8,6)) 
ax = fig.gca(projection='3d') 
ax.plot_wireframe(x*3.+5., y*3., z*3.,linewidths=.2) 
ax.view_init(azim=30,elev=40) 
ax.set_aspect("equal") 

plt.show() 
''' 

fig = plt.figure(figsize=(8,6)) 
ax = fig.gca(projection='3d') 


ax.plot_wireframe(x*3.+5., y*3., z*3.,linewidths=.2) 
spheres = [ [0,0,0,1], [3,0,0,1.6] ] 
for v in spheres: 
    ax.plot_wireframe(x*v[3]+v[0], y*v[3]+v[1], z*v[3]+v[2],linewidths=.2) 
ax.view_init(azim=30,elev=40) 

ax.set_xlim([0,7]) # Like so. 
ax.set_ylim([-3,3]) 
ax.set_zlim([-3,3]) 

ax.set_aspect("equal") 
plt.show() 
+0

첫 번째 플롯은 코드가 하나 개의 영역에 대해 잘 작동 것을 보여주기 위해이었다. 비록 그것이 작동하는지 정확히 알지는 못했지만, x, y, z 한계에 대한 연결을 설명 할 수 있습니까? 감사! –

+0

댓글 더보기 : 여전히 왜곡되어 있습니다. 한계를 설정하는 것은 분명히 동일한 종횡비를 설정하는 것과 충돌합니다 (단지 xlim을 -10 10으로 설정하십시오). 나는 ax.set_aspect ('equal', 'datalim')를 사용하여 시도했지만 클릭하고 드래그하면 엉망이된다. 버그가 있습니까? –