2016-12-05 33 views
0

我需要繪製透明度,半徑和x,y,z座標變化的球體。繪製matplotlib中的曲面(球體),以座標爲中心,然後以0,0,0

我能夠繪製球體並提供透明度(alpha)值和半徑值(爲了簡化示例,我已將其更改爲隨機數),但我一直無法弄清楚如何將球體圍繞其他座標0,0,0進行居中。

如何使用pythons matplotlib libary將一個球體圍繞其他0,0,0座標?

這是我到目前爲止;

from __future__ import print_function 
from mpl_toolkits.mplot3d import axes3d 
import matplotlib.pyplot as plt 
import numpy as np 
import time , random 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
ax.set_xlim3d([100.0, 0.0]) 
ax.set_xlabel('X') 
ax.set_ylim3d([0.0, 100.0]) 
ax.set_ylabel('Y') 
ax.set_zlim3d([0.0, 100.0]) 
ax.set_zlabel('Z') 
ax.set_title('pFC-amygdala-insula') 

wframe = None 
tstart = time.time() 
for num in range(100): 
    oldcol = wframe 
    r = random.randint(1, 20) 
    alpha = 1.0/random.randint(25, 100) 
    u = np.linspace(0, 2 * np.pi, 100) 
    v = np.linspace(0, np.pi, 100) 
    x = r * np.outer(np.cos(u), np.sin(v)) 
    y = r * np.outer(np.sin(u), np.sin(v)) 
    z = r * np.outer(np.ones(np.size(u)), np.cos(v)) 
    sphere = ax.plot_surface(x, y, z, color='b', alpha=alpha) 
    if oldcol is not None: ax.collections.remove(oldcol) 
    plt.pause(.001) 

print('Duration: %f' % (100/(time.time() - tstart))) 

回答

1

只需將中心座標添加到x,y和z。

x = r * np.outer(np.cos(u), np.sin(v)) + center_x 
y = r * np.outer(np.sin(u), np.sin(v)) + center_y 
z = r * np.outer(np.ones(np.size(u)), np.cos(v)) + center_z 
+0

非常感謝! – user1454024

相關問題