2013-10-30 194 views
1

我想繪製使用matplotlib的三維繪圖中的多條線。我有6個數據集,包含x和y值。到目前爲止,我嘗試過的是爲數據集中的每個點賦予一個z值。因此,數據集1中的所有點都有z = 1,數據集2中的所有點都有z = 2,依此類推。然後我將它們導出到三個文件中。包含所有x值的「X.txt」,包含所有y值的「Y.txt」,與「Z.txt」相同。matplotlib繪製3D中的多條線

這裏是到目前爲止的代碼:

 #!/usr/bin/python 
     from mpl_toolkits.mplot3d import axes3d 
     import matplotlib.pyplot as plt 
     import numpy as np 
     import pylab 

     xdata = '/X.txt' 
     ydata = '/Y.txt' 
     zdata = '/Z.txt' 

     X = np.loadtxt(xdata) 
     Y = np.loadtxt(ydata) 
     Z = np.loadtxt(zdata) 

     fig = plt.figure() 
     ax = fig.add_subplot(111, projection='3d') 
     ax.plot_wireframe(X,Y,Z) 
     plt.show() 

我得到什麼看起來非常接近我所需要的。但是在使用線框時,每個數據集的第一個點和最後一個點都連接在一起。如何爲每個數據集更改線的顏色,以及如何刪除數據集之間的連接線?

有沒有更好的繪圖風格,然後線框?

回答

4

單獨加載數據集,然後單獨繪製每個數據集。

我不知道是什麼格式,你有,但你想要一個axes對象上這樣的事情

from mpl_toolkits.mplot3d.axes3d import Axes3D 
import matplotlib.pyplot as plt 
fig, ax = plt.subplots(subplot_kw={'projection': '3d'}) 

datasets = [{"x":[1,2,3], "y":[1,4,9], "z":[0,0,0], "colour": "red"} for _ in range(6)] 

for dataset in datasets: 
    ax.plot(dataset["x"], dataset["y"], dataset["z"], color=dataset["colour"]) 

plt.show() 

每次調用plot(或plot_wireframe但我不知道你需要什麼)時間,它會將數據添加爲新系列。如果你忽略了color自變量matplotlib會爲你選擇它們,但它不太聰明,在添加太多系列之後,它會循環並開始再次使用相同的顏色。

n.b.我還沒有測試過 - 不記得color是否是正確的參數。很確定它是。

+0

非常感謝!這幫助了我。爲什麼我使用線框...認爲這是3D繪製多條線的唯一方法。多麼愚蠢.... :) – WMrioa