2009-12-31 13 views
35

Şu anda bir nx3 matris dizilim var. Üç sütunu üç eksenli olarak çizmek istiyorum. Bunu nasıl yapabilirim?Python'da 3D dağılım grafiği nasıl oluşturulur?

Ben googled var ve insanlar Matlabkullanarak önerdi ama ben gerçekten anlamakta zor anlar yaşıyorum. Aynı zamanda bir dağılım grafiği olmalıyım.

Birisi bana öğretebilir mi?

+1

Arsa yapmak için bir uygulama mı arıyorsunuz, yoksa arsa taslağını çizen (herhangi bir dilde) kod yazmak ister misiniz? –

+0

Asimptot'u kullanın - ücretsiz, güçlü ve kalitesi harika! –

+1

Bir diziniz varsa, bir programınız olduğunu ve bu dizinin bir parçası olduğunu varsayalım. Lütfen ne tür bir programın (dil) olduğunu belirterek size yardım etme şansı verin! –

cevap

66

. matplotlib, tam olarak istediğiniz şeyi yapacak bir mplot3d modülüne sahiptir.

X_iso benim 3
# 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() 

iken: Bu benim için çalıştı

matplotlib 3D image

+0

Güzel bir çözüm. Plt.zlabel ('zlabel') 'ın işe yaramayacağını unutmayın. Z eksenini etiketlemek için şunları kullanmanız gerekir: 'ax.set_zlabel ('Z')'. –

-3
+0

MayaVi'yi ciddi olarak düşünmelisiniz. Tüm 3D çizimleri için MayaVi'yi burada kullanıyoruz ve gerçekten çok iyi. –

+1

-1, bir bağlantı bir cevap değil. –

0

kullanın aşağıdaki kodu:

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

Yukarıdaki kod gibi bir rakam üretir -D dizisi ve X_vals, Y_vals, Z_vals kopyaladım/u Bu diziden 1 numaralı sütun/eksen ve sırasıyla bu değişkenlere/dizilere atanır.