2009-12-31 53 views
35

Tôi hiện đang có mảng ma trận nx3. Tôi muốn vẽ ba cột dưới dạng ba trục. Tôi có thể làm như thế nào?Cách tạo một ô phân tán 3D bằng Python?

Tôi đã googled và mọi người đề xuất sử dụng Matlab, nhưng tôi thực sự gặp khó khăn khi hiểu nó. Tôi cũng cần nó là một âm mưu phân tán.

Ai đó có thể dạy tôi không?

+1

Bạn đang tìm kiếm một ứng dụng để thực hiện cốt truyện, hoặc bạn có muốn viết mã (bằng bất kỳ ngôn ngữ nào) vẽ cốt truyện không? –

+0

Sử dụng asymptote - nó là miễn phí, mạnh mẽ, và chất lượng là tuyệt vời! –

+1

Nếu bạn có một mảng, tôi cho rằng bạn có một chương trình và mảng này là một phần của nó. Vui lòng cho chúng tôi cơ hội để giúp bạn bằng cách chỉ ra loại chương trình (ngôn ngữ) nào! –

Trả lời

66

Bạn có thể sử dụng matplotlib cho việc này. matplotlib có một mô-đun mplot3d sẽ thực hiện chính xác những gì bạn muốn.

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() 

Đoạn mã trên tạo ra một nhân vật như:

matplotlib 3D image

+0

Giải pháp tốt. Lưu ý rằng 'plt.zlabel ('zlabel')' không hoạt động. Để gắn nhãn trục z bạn cần sử dụng: 'ax.set_zlabel ('Z')'. –

1

Sử dụng tiệm cận!

Đây là những gì nó có thể trông giống như:

http://asymptote.sourceforge.net/gallery/3D%20graphs/helix.pdf

Đây là mã: http://asymptote.sourceforge.net/gallery/3D%20graphs/helix.asy

Asymptote cũng có thể đọc trong các tập tin dữ liệu.

Và toàn bộ bộ sưu tập: http://asymptote.sourceforge.net/gallery/

Để sử dụng tiệm cận từ bên trong Python:

http://www.tex.ac.uk/tex-archive/graphics/asymptote/base/asymptote.py

-3
+0

Bạn nên nghiêm túc xem xét MayaVi. Chúng tôi sử dụng MayaVi ở đây cho tất cả âm mưu 3D và nó thực sự tốt. –

+1

-1, một liên kết không phải là một câu trả lời. –

0

Sử dụng đoạn mã sau đó làm việc cho tôi:

# 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() 

khi X_iso là 3 của tôi -D mảng và cho X_vals, Y_vals, Z_vals tôi đã sao chép/u sed 1 cột/trục từ mảng đó và gán cho các biến/mảng tương ứng.

Các vấn đề liên quan