numpy Plot 3d carpet grid with python [已关闭]

3yhwsihp  于 12个月前  发布在  Python
关注(0)|答案(3)|浏览(67)

已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

9年前关闭。
Improve this question
我刚刚开始学习python,在尝试生成图形时遇到了一个问题。
我有一个大的点集(~ 42000)与X-Y-Z坐标和几个相关的变量(温度,水含量.)我想把所有这些东西都画在一个图中,但这似乎是不可能的与我的Python知识水平。所有这些点都位于一个直角坐标系的规则网格上。所以我想用numpy制作一个meshgrid网格,但是我被卡住了。基本上,我想transfrom 1D矢量(X,Y,Z和T,让我们说)到一个3D网格内插数据。这可能吗?
你能帮帮我吗?

cidc1ykv

cidc1ykv1#

这是一个复杂的数据查看,所以我认为你需要一个工具,旨在使查看3D数据容易,MayaVi是一个很好的选择。
举个例子

最重要的一点是它是高度互动的,所以用鼠标我可以很容易地抓取和移动切片平面。甚至倾斜它们来探索数据体数据(这非常有用,因为在这种情况下,我们可以看到它的内部大部分是红色的,这是我们无法从表面猜测到的):

下面是代码,这只是一个稍微修改的版本:

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

lvjbypge2#

我不太明白你想要什么。但是如果你打算做一个4D图,你将需要一个第四维(你有一个你想要的例子吗?)。我使用颜色作为另一个维度,在这个例子中,我绘制了一个以(0,0,0)为中心的高斯分布,每个点的颜色给出了函数的值。

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)

您可以使用scipy.interpolate作为插值部分。

x759pob2

x759pob23#

查看matplotlib,它是一个很好的,有很好的说明的python绘图模块,你应该会找到你需要的!
看看这个:

相关问题