Python'da 3B dağılım grafiği nasıl yapılır?


92

Şu anda bir nx3 matris dizim var. Üç sütunu üç eksen olarak çizmek istiyorum. Bunu nasıl yapabilirim?

Google'da araştırdım ve insanlar Matlab'ı kullanmayı önerdi , ancak gerçekten anlamakta zorlanıyorum. Ayrıca bir dağılım grafiğine ihtiyacım var.

Biri bana öğretebilir mi?


1
Olay örgüsünü yapacak bir uygulama mı arıyorsunuz, yoksa arsayı çizen kodu (hangi dilde) yazmak istiyorsunuz?
Nils Pipenbrinck

Asimptot kullanın - ücretsiz, güçlü ve kalitesi harika!
Hamish Grubijan

1
Bir diziniz varsa, bir programınız olduğunu ve bu dizinin onun bir parçası olduğunu varsayarım. Lütfen ne tür bir program (dil) olduğunu belirterek size yardımcı olma şansı verin!
Carl Smotricz

Yine de asimptot kullanırdım (kitaplık olarak) veya sadece onun için girdi dosyası oluştururdum. İnanılmaz çıktı kalitesine bakın!
Hamish Grubijan

2
Bir buysa n3 dizideki yaparak, 3 boyutlu olarak bir eğrinin bir arsa alacak. "3 boyutlu çizim" için bir n x m x ldiziye ihtiyacınız olacaktır . Eğri (x,y,z)üzerindeki bir noktayı temsil eden herhangi bir demet ile bir eğri ister misiniz ?
Alok Singhal

Yanıtlar:


162

Bunun için matplotlib'i kullanabilirsiniz . matplotlib tam olarak istediğinizi yapacak bir mplot3d modülüne sahiptir.

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 aşağıdaki gibi bir şekil oluşturur:

matplotlib 3D görüntü


11
Güzel çözüm. Bunun plt.zlabel('zlabel')işe yaramayacağını unutmayın . Kullanmak gerek eksen z etiketlemek için: ax.set_zlabel('Z').
Yonatan Simson

8

Benim için çalıştığı aşağıdaki kodu kullanın:

# 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 ise benim 3 boyutlu dizim ve X_vals, Y_vals, Z_vals için bu diziden 1 sütun / eksen kopyaladım / kullandım ve bu değişkenlere / dizilere atandım.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.