2009-12-31 73 views
35

我目前有一個nx3矩陣數組。我想把三列畫成三個軸。 我該怎麼做?如何在Python中製作3D散點圖?

我已經使用Google和人們建議使用Matlab,但我真的很難理解它。我也需要它是一個散點圖。

有人可以教我嗎?

+1

你正在尋找一個應用程序來做這個情節,或者你想寫一個繪製情節的代碼嗎? – 2009-12-31 15:38:14

+0

使用漸近線 - 它是免費的,功能強大,質量真棒! – 2009-12-31 15:40:01

+1

如果你有一個數組,我假設你有一個程序,這個數組就是它的一部分。請給我們一個機會,通過說明它是什麼樣的程序(語言)來幫助你! – 2009-12-31 15:46:35

回答

66

您可以使用matplotlib這一點。 matplotlib有一個mplot3d模塊,它可以完成你想要的任務。

from matplotlib import pyplot 
from mpl_toolkits.mplot3d import Axes3D 
import random 


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

sequence_containing_x_vals = list(range(0, 100)) 
sequence_containing_y_vals = list(range(0, 100)) 
sequence_containing_z_vals = list(range(0, 100)) 

random.shuffle(sequence_containing_x_vals) 
random.shuffle(sequence_containing_y_vals) 
random.shuffle(sequence_containing_z_vals) 

ax.scatter(sequence_containing_x_vals, sequence_containing_y_vals, sequence_containing_z_vals) 
pyplot.show() 

上面的代碼生成像圖:

matplotlib 3D image

+0

很好的解決方案。請注意'plt.zlabel('zlabel')'不會工作。要標記z軸,您需要使用:'ax.set_zlabel('Z')'。 – 2016-05-12 04:18:45

-3
+0

你應該認真考慮MayaVi。我們在這裏使用MayaVi來進行所有的3D繪圖,它非常好。 – 2009-12-31 17:46:38

+1

-1,鏈接不是答案。 – 2014-01-23 01:38:08

0

使用下面的代碼,它的工作對我來說:

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

    # Generate the values 
    x_vals = X_iso[:, 0:1] 
    y_vals = X_iso[:, 1:2] 
    z_vals = X_iso[:, 2:3] 

    # Plot the values 
    ax.scatter(x_vals, y_vals, z_vals, c = 'b', marker='o') 
    ax.set_xlabel('X-axis') 
    ax.set_ylabel('Y-axis') 
    ax.set_zlabel('Z-axis') 

    plt.show() 

而X_iso是我3 -D數組和X_vals,Y_vals,Z_vals複製/ u從該數組中選出1列/軸並分別分配給這些變量/數組。