我有一个(X,Y,Z)numpy数组,它描述了一个盒子里的每个点。我想做这个数据的3D图,其中[x,y,z]处的点的颜色是数组中该点的值,到目前为止,我已经沿着沿着尝试了一些东西:
fig = plt.figure()
ax = plt.axes(projection='3d')
data = np.random.rand(3,4,5)
xs = np.arange(0,data.shape[0])
ys = np.arange(0,data.shape[1])
zs = np.arange(0,data.shape[2])
for x in xs:
for y in ys:
for z in zs:
ax.scatter(x, y, z, c = data[x,y,z])
plt.show()
这可以正确地在每个索引处绘制一个点,但不会根据值更改颜色。我见过一些使用ravel/reshaping数据到1D数组中的方法,但由于这种方法一次只绘制一个点,因此会引发错误。
有没有比单独绘制每个点更明智的方法?
(PS这是为了可视化电磁传播的FDTD模拟,所以如果你知道一个更好的方法,那么这也将是有帮助的)
1条答案
按热度按时间p4tfgftt1#
试试像这样的东西