2017-05-21 12 views
-1

私はプログラミングの初心者です。私が作成しようとしているプログラムは、大学物理学の研究に使用されます。 私の問題は単なるコードだけではありません。簡単にするために:私は、3次元ユニットセル(今のところ長方形と呼ぶ)を作成し、これらの長方形のランダムな頂点にポイントを置く研究プロジェクトに取り組んでいます。矩形は互いに隣接しているはずです。ランダムな点は、異なる計算に使用されます。 matplotlibを使ってこれが可能かどうか疑問に思っていました。立方体/直角プリズムの配列を作成し、それらの頂点にランダムな点を置くことはできますか?また、Matplotlibはこれを行う最も良い方法ですか?私はこれに別の方法でアプローチすることをお勧めしますか?Pythonのオブジェクトとグラフ表示

+0

はい、できますが、matplotlibは正常に動作するはずです。 –

+1

matplotlibはデータを表示するのに適していますが、データを保存したり、計算をしたりすることはありません。あなたの主な課題は、モデルの要素を表現するのに適したデータ構造を作成し、モデルの計算を行うためのコードを書くことです。データを格納するには、配列の数が少ない配列、パンダのデータフレーム、またはおそらくタプル(ネイティブデータ型)のリストを考えることができます。例えば。それぞれの点に1行、各座標に1列の行列を作成することができます。 –

答えて

1

PythonとMatplotlibで確かにこれを行うことができます。

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

下図生成します:

enter image description here

あなたは単位矩形を使用する必要がある場合(つまり、実際の幅/高さ/深さ)、あなたが少し必要があるだろうが、このコードをチェックアウトより複雑なデータ構造になっていますが、同じ考え方が有効です。

+0

ありがとうございます。これはうまく収まるもののようです。 – Astupidhippo

関連する問題