2012-06-04 83 views
2

我有值(0.7, 0.4, 0.1)阵列,我想与此代码来绘制对应的椭圆体:相同范围轴XYZ

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
import numpy as np 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 

u = np.linspace(0, 2 * np.pi, 100) 
v = np.linspace(0, np.pi, 100) 

x = 0.7 * np.outer(np.cos(u), np.sin(v)) 
y = 0.4 * np.outer(np.sin(u), np.sin(v)) 
z = 0.1 * np.outer(np.ones(np.size(u)), np.cos(v)) 
ax.plot_surface(x, y, z, rstride=4, cstride=4, color='b') 

plt.show() 

当我绘制该图中,它看起来像一个球形比预期的更椭球。我想问题是设置轴的“正确”范围。

我怎么能解决这个“问题”?

回答

2

您可以使用ax.set_xlim(),ax.set_ylim()ax.set_zlim()方法来设置适当的范围。

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
import numpy as np 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 

u = np.linspace(0, 2 * np.pi, 100) 
v = np.linspace(0, np.pi, 100) 

x = 0.7 * np.outer(np.cos(u), np.sin(v)) 
y = 0.4 * np.outer(np.sin(u), np.sin(v)) 
z = 0.1 * np.outer(np.ones(np.size(u)), np.cos(v)) 
ax.plot_surface(x, y, z, rstride=4, cstride=4, color='b') 
ax.set_xlim([-0.5, 0.5]) 
ax.set_ylim([-0.5, 0.5]) 
ax.set_zlim([-0.5, 0.5]) 

plt.show() 
+0

尼斯。对于每个轴,我使用'ax.set_xlim([ - max,max])'修改'ax.set_xlim([ - 0.5,0.5])',其中max是数组的最大值。谢谢! –