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.