python - 从 (x, y, z) 数据集在 matplotlib 中绘制等值线/等高线

标签 python matplotlib contour

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

最佳答案

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

规则网格上的数据

如果 xy 数据已经定义了一个网格,它们可以很容易地重新整形为四边形网格。例如

#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使用

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 来完成.

plt.tricontour(x,y,z)

matplotlib page 上可以找到比较后两种方法的示例.

关于python - 从 (x, y, z) 数据集在 matplotlib 中绘制等值线/等高线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42702920/

相关文章:

javascript - 如何构建网页文件浏览器?

Matplotlib:Gridspec 或 plt.subplot2grid 的 OOP 等价物是什么

c++ - OpenCV 仅围绕大轮廓绘制矩形?

python - 文件名列表存储在哪里?

python - 如何将 `variable-vale` 对日期集成到字典中?

python - 如何查找文件名的特定部分/扩展名?

python - matplotlib 在 mac osx 上挂起并且不显示图形

pandas - 如何修复属性错误: 'Series' object has no attribute 'find' ?

r - 等值线 - 绘图 - 升序

python - 胡矩比较