2017-05-21 2 views
-1

Je suis novice en programmation. Le programme que je prévois de créer sera utilisé pour la recherche en physique collégiale. Donc, mon problème est plus qu'un simple code. Pour rester simple: je travaille sur un projet de recherche qui consiste à créer des cellules d'unités 3d (appelons-les rectangles pour l'instant) et à placer des points aux sommets aléatoires de ces rectangles. Les rectangles sont censés être adjacents les uns aux autres. Les points aléatoires seront ensuite utilisés pour différents calculs. Je me demandais si cela est possible en utilisant matplotlib. Puis-je créer un tableau de prismes cubes/rectangulaires et placer des points aléatoires sur leurs sommets? Est-ce que Matplotlib est le meilleur moyen de le faire? Recommandez-vous que je m'approche d'une autre façon?Objets et graphiques en python

+0

oui vous pouvez, matplotlib devrait fonctionner parfaitement bien. –

+1

matplotlib est bon pour afficher vos données, mais il ne sera pas stocker vos données ou faire des calculs à ce sujet. Votre principal défi sera de créer une structure de données appropriée pour représenter les éléments de votre modèle, puis d'écrire du code pour faire des calculs sur eux. Pour stocker les données, vous pouvez envisager des tableaux numériques, des données pandas ou éventuellement des listes de tuples (types de données natifs). Par exemple. Vous pouvez créer une matrice avec une ligne pour chaque point et une colonne pour chaque coordonnée. –

Répondre

1

Vous pouvez certainement faire quelque chose comme ça avec Python et Matplotlib. Consultez ce code:

import numpy as np 
import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 

# Generate a 3D grid 
ext = np.arange(0,10,1) 
xx, yy, zz = np.meshgrid(ext,ext,ext) 
values = np.zeros((10,10,10)) 

# Put some values on a few vertices 
xInd = np.random.randint(0,10,20) 
yInd = np.random.randint(0,10,20) 
zInd = np.random.randint(0,10,20) 

values[[xInd,yInd,zInd]] = np.random.random(20) 

# Create a scatter plot 
fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
im = ax.scatter(xx,yy,zz,c=values, cmap=plt.cm.spectral_r, edgecolor=None, alpha=0.7) 
ax.set_xlabel('x') 
ax.set_xlabel('y') 
ax.set_xlabel('z') 
plt.colorbar(im) 
fig.show() 

qui génère la figure ci-dessous:

enter image description here

Si vous devez utiliser des rectangles unitaires (ie avec largeur réelle/hauteur/profondeur), vous aurez alors besoin d'un peu structure de données plus compliquée mais les mêmes idées fonctionneraient.

+0

Merci. Cela semble être quelque chose qui irait bien. – Astupidhippo