web-dev-qa-db-fra.com

Comment faire un nuage de points 3D en Python?

Je suis actuellement un tableau matriciel nx3. Je veux tracer les trois colonnes comme trois axes. Comment puis je faire ça?

J'ai cherché sur Google et les gens ont suggéré d'utiliser Matlab, mais j'ai vraiment du mal à le comprendre. J'ai aussi besoin que ce soit un nuage de points.

Quelqu'un peut-il m'apprendre?

64
user211037

Vous pouvez utiliser matplotlib pour cela. matplotlib a un module mplot3d qui fera exactement ce que vous voulez.

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

Le code ci-dessus génère un chiffre comme:

matplotlib 3D image

123
Chinmay Kanchi

Utilisez le code suivant cela a fonctionné pour moi:

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

alors que X_iso est mon tableau à trois dimensions et pour X_vals, Y_vals, Z_vals, j'ai copié/utilisé 1 colonne/axe de ce tableau et affecté à ces variables/tableaux respectivement.

2
Saeed Ullah

Utilisez asymptote à la place!

Voici à quoi cela peut ressembler:

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

C'est le code: http://asymptote.sourceforge.net/gallery/3D%20graphs/helix.asy

Asymptote peut également lire des fichiers de données.

Et la galerie complète: http://asymptote.sourceforge.net/gallery/

Pour utiliser asymptote depuis Python:

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

1
Hamish Grubijan