2017-07-19 108 views
0

我想通過Python在同一張圖中繪製兩條空間曲線。如何通過Python繪製多個3d曲線圖片?

所以,我用兩個Axes3D.plot繪製曲線。但由此產生的圖片只顯示最後一張。如果我使用Axes3D.scatter,它可以顯示所有點。

這裏是我的代碼:

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


t=2 #t can be changed 

fig = plt.figure() 
ax=Axes3D(fig) 

#data 

def unitilize(x,y,z): 
    r=mt.sqrt(x**2+y**2+z**2) 
    return x/r, y/r, z/r 

def g_1(x,y,z): 
    x=t*x     
    z=z/t     
    x,y,z=unitilize(x,y,z) 
    return x,y,z 

stepCnt=10000   ######step 
#########data################# 
xs = np.empty((stepCnt + 1,)) 
ys = np.empty((stepCnt + 1,)) 
zs = np.empty((stepCnt + 1,)) 

#Setting initial values 
def huatu(x,y,z): 

    xs[0], ys[0], zs[0] =unitilize(x,y,z) 

    for i in range(stepCnt): 
     xs[i+1],ys[i+1],zs[i+1]=g_1(xs[i], ys[i], zs[i]) 
    return xs,ys,zs 


xs3,ys3,zs3=huatu(1,10,40) 
ax.plot(xs3, ys3, zs3, color='b', marker='x') 

xs2,ys2,zs2=huatu(1,0,40) 
ax.plot(xs2, ys2, zs2, color='r', marker='o') 

enter image description here

回答

0

在你的形象,它看起來像藍線是存在的,但它隱藏的紅線後面(你可以看到藍色邊角露在外面的紅色圓圈)。嘗試改變藍線中的數據,你應該能夠看到它。

+1

這應該是一條評論... – dawg

+0

我沒有足夠的代表發表評論。 – ahota

+0

非常感謝!我找到了一個解決方案。我應該在我的函數'huatu'中放入'xs = np.empty((stepCnt + 1,))',以便xs2和xs3具有不同的數據。但我不知道這是怎麼發生的! –