我尝试用matplotlib画一个像这样的球体:
但我找不到一种方法在背面有虚线和垂直圆周看起来有点奇怪
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(12,12), dpi=300)
ax = fig.add_subplot(111, projection='3d')
ax.set_aspect('equal')
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = 1 * np.outer(np.cos(u), np.sin(v))
y = 1 * np.outer(np.sin(u), np.sin(v))
z = 1 * np.outer(np.ones(np.size(u)), np.cos(v))
#for i in range(2):
# ax.plot_surface(x+random.randint(-5,5), y+random.randint(-5,5), z+random.randint(-5,5), rstride=4, cstride=4, color='b', linewidth=0, alpha=0.5)
ax.plot_surface(x, y, z, rstride=4, cstride=4, color='b', linewidth=0, alpha=0.5)
ax.plot(np.sin(theta),np.cos(u),0,color='k')
ax.plot([0]*100,np.sin(theta),np.cos(u),color='k')
1条答案
按热度按时间ekqde3dh1#
在你展示的例子中,我不认为这些圆可以互相垂直(即:一个是赤道,一个是穿过北极和南极的)。如果水平圆是赤道,那么北极一定在一条垂直线上的某个地方,这条垂直线穿过代表球体的黄色圆的中心。否则,赤道的右侧看起来会比左侧高或低。但是,表示极圆的椭圆仅穿过黄色圆顶部和底部的中心线。因此,北极在球体的顶部,这意味着我们必须直视赤道,这意味着它应该看起来像一条线,而不是椭圆。
下面是一些代码,用于复制与您发布的图类似的内容: