绘图与蟒蛇的3d笛卡尔网格

时间:2014-03-28 14:33:27

标签: python numpy

我刚刚开始学习python,在尝试制作数字时遇到了问题。

我有一大堆积分(~42000),XYZ坐标和几个变量相关联(温度,含水量......)我想在一个图中绘制所有这些东西,但似乎不可能蟒蛇知识的水平..所有这些点都位于笛卡尔规则网格上。所以我想生成一个numpy的网格网格,但是我被卡住了。基本上我想将1D向量(X,Y,Z和T​​让我们说)转换成带有插值数据的3d网格。这可能吗?

你能帮我吗?

4 个答案:

答案 0 :(得分:8)

这是一个复杂的数据,所以我认为您需要一个专门用于查看3D数据的工具,MayaVi是一个很好的选择。

这是一个例子,

enter image description here

最重要的一点是它具有高度的互动性,因此使用鼠标我可以轻松地抓住并在切片平面上移动。甚至倾斜它们来探索数据体积数据(这是非常有用的,因为在这种情况下我们可以看到它内部大部分是红色的,我们无法从表面猜测出来):< / p>

enter image description here

以下是代码,它只是this的略微修改版本:

from mayavi import mlab
import numpy as np

x, y, z = np.ogrid[-2:2:20j, -2:2:20j, -2:2:20j]
s = np.sin(x*y*z + x + y*z)/(x*y*z + x + y*z)

mlab.pipeline.image_plane_widget(mlab.pipeline.scalar_field(s),
                            plane_orientation='x_axes',
                            slice_index=20,
                        )
mlab.pipeline.image_plane_widget(mlab.pipeline.scalar_field(s),
                            plane_orientation='y_axes',
                            slice_index=20,
                        )
mlab.pipeline.image_plane_widget(mlab.pipeline.scalar_field(s),
                            plane_orientation='z_axes',
                            slice_index=20,
                        )
mlab.outline()
mlab.show()

答案 1 :(得分:3)

检查matplotlib,它是一个很好的,图文并茂的python绘图模块,你应该找到你需要的东西!

A first example

Specific 3D example

答案 2 :(得分:2)

我不太了解你想要什么。但是如果你想要一个4D的情节,你将需要第四个维度(你有一个你想要的例子吗?)。我使用颜色作为另一个维度,在这个例子中,我在以(0,0,0)为中心的R ^ 3上绘制了高斯函数,每个点的颜色给出了函数的值。

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

X, Y, Z = np.mgrid[-1:1:10j, -1:1:10j, -1:1:10j]

T = np.exp(-X**2 - Y**2 - Z**2)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
scat = ax.scatter(X, Y, Z, c=Z.flatten(), alpha=0.5)
fig.colorbar(scat, shrink=0.5, aspect=5)

enter image description here

对于插值部分,您可以使用scipy.interpolate

答案 3 :(得分:1)

Mayavi可能是另一种选择