在 matplotlib 中根据 (x, y, z) 数据集绘制等值线/轮廓

2024-01-06

嗨,我是编程新手,我正在尝试做一些可能非常明显的事情,但我一生都无法弄清楚。我有一系列 x、y、z 数据(在我的例子中,对应于距离、深度和 pH 值)。我想使用 matplotlib 在 xy(距离、深度)网格上绘制 z 数据(pH)的等值线。有什么办法可以做到这一点吗?谢谢。


解决方案将取决于数据的组织方式。

规则网格上的数据

If the x and y数据已经定义了网格,它们可以轻松地重新整形为四边形网格。例如。

#x  y  z
 4  1  3
 6  1  8
 8  1 -9
 4  2 10
 6  2 -1
 8  2 -8
 4  3  8
 6  3 -9
 8  3  0
 4  4 -1
 6  4 -8
 8  4  8 

可以绘制为contour http://matplotlib.org/devdocs/api/_as_gen/matplotlib.axes.Axes.contour.html using

import matplotlib.pyplot as plt
import numpy as np
x,y,z = np.loadtxt("data.txt", unpack=True)
plt.contour(x.reshape(4,3), y.reshape(4,3), z.reshape(4,3))

任意数据

(a)如果数据不在四边形网格上,则可以在网格上插入数据。 matplotlib 本身提供了一种方法,使用matplotlib.mlab.griddata.

import matplotlib.mlab
xi = np.linspace(4, 8, 10)
yi = np.linspace(1, 4, 10)
zi = matplotlib.mlab.griddata(x, y, z, xi, yi, interp='linear')
plt.contour(xi, yi, zi)

(b)最后,无需使用四边形网格即可完全绘制轮廓。这可以使用以下方法完成tricontour http://matplotlib.org/devdocs/api/_as_gen/matplotlib.axes.Axes.tricontour.html.

plt.tricontour(x,y,z)

比较后两种方法的示例位于matplotlib 页面 http://matplotlib.org/examples/pylab_examples/tricontour_vs_griddata.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 matplotlib 中根据 (x, y, z) 数据集绘制等值线/轮廓 的相关文章

随机推荐