2017-05-21 60 views
-1

我是編程的新手。我計劃創建的計劃將用於大學物理研究。 所以我的問題不僅僅是一個代碼。爲了保持簡單:我正在研究一個涉及創建3D單元格的研究項目(我們現在稱之爲矩形),並將點放置在這些矩形的隨機頂點。矩形應該是彼此相鄰的。隨機點將被用於不同的計算。我想知道是否可以使用matplotlib。我可以創建一個立方體/矩形棱鏡的數組,並將隨機點放在它們的頂點上嗎?另外,Matplotlib是做這件事的最好方法嗎?你是否建議我以另一種方式處理這個問題python中的對象和圖形

+0

是的,你可以,matplotlib應該工作得很好。 –

+1

matplotlib很適合顯示您的數據,但不會存儲您的數據或對其進行計算。您的主要挑戰將是創建一個合適的數據結構來表示模型的元素,然後編寫代碼對它們進行計算。要存儲數據,可以考慮numpy數組,pandas數據框或可能的元組列表(本地數據類型)。例如。您可以爲每個點創建一個矩陣,爲每個座標創建一個矩陣。 –

回答

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