Matplotlib 3D震源图,从.txt文件中读取xyz值

时间:2012-05-24 03:29:20

标签: python arrays list matplotlib

我正在努力学习python。我有大约500,000次地震(震源)的真实世界xy(纬度长dd)坐标和z(低于地表的公里)值,从0.1到2.0。我在.txt制表符分隔表中将数据切割为10行xyz值。我想在matplotlib的三维散点图可旋转框中绘制数据。我可以使用基本命令来读取数据,格式看起来很好。我不清楚我是否需​​要将数据读入列表或数组以便mpl读取和绘制数据。我需要创建一个数组吗?

然后,我想绘制油井的地下位置,给定井眼顶点的xyz坐标(大约40个位置),我是否需要创建折线?这些数据与一些偏心者具有相同的一般坐标(进一步评估)。哪个数据集应该是情节,哪个应该是子情节?另外,我不清楚我需要的“浮动”给出xy lat长坐标的6到7位小数,以及2位小数z坐标。

1 个答案:

答案 0 :(得分:4)

实际上,Matplotlib是一个糟糕的选择。它不允许真正的3D绘图,并且它不会处理您需要的复杂性(或3D中的点数)。请改为查看mayavi

顺便说一句,听起来你在做微震? (我也是地球物理学家,无论它的价值多少。)

作为一个简单的例子:

from enthought.mayavi import mlab
import numpy as np

# Generate some random hypocenters
x, y, z, mag = np.random.random((4, 500))

# Make a curved well bore...
wellx, welly, wellz = 3 * [np.linspace(0, 1.5, 10)]
wellz =  wellz**2

# Plot the hypocenters, colored and scaled by magnitude
mlab.points3d(x, y, z, mag)

# Plot the wellbore
mlab.plot3d(wellx, welly, wellz, tube_radius=0.1)

mlab.show()

enter image description here

就您的数据读取而言,听起来应该如下:

x, y, z = np.loadtxt('data.txt').T

你遇到了什么问题?