gpt4 book ai didi

python - 在 Python 中使用对应于 X、Y 和 Z 的三个不同数组构建等高线图

转载 作者:行者123 更新时间:2023-11-30 22:45:48 24 4
gpt4 key购买 nike

如果我有与由数组分隔的 z 值相对应的特定 x 和 y 值,我将如何绘制等值线图?例如:

Array 1 (X):
1
4
6
7
8
2
6

Array 2 (Y):
7
7
8
9
0
1
2

Array 3 (Z):
8
9
7
1
2
2
3

我是否必须执行 X1, Y1 = np.meshgrid(X, Y) 并以某种方式塑造 Z 数组?有没有另一种方法可以在不使用网格的情况下做到这一点?另外,如果我添加第四个数组并将其命名为 Z1,并具有与特定 Z1 对应的相同 x 和 y 值,我可以将此等高线图与第一个等高线图一起绘制吗?

最佳答案

如果您没有规则的网格,使用三角形表面插值可能是一个不错的选择。

在这个例子和上面的例子中,如果你有更长的数据,你只需要检查图的边界。

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.tri as tri

sns.set(style="white")

x = np.array([1,4,6,7,8,2,6])
y = np.array([7,7,8,9,0,1,2])
z = np.array([8,9,7,1,2,2,3])

fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(111)

nptsx, nptsy = 100, 100
xg, yg = np.meshgrid(np.linspace(x.min(), x.max(), nptsx),
np.linspace(y.min(), y.max(), nptsy))

triangles = tri.Triangulation(x, y)
tri_interp = tri.CubicTriInterpolator(triangles, z)
zg = tri_interp(xg, yg)

# change levels here according to your data
levels = np.linspace(0, 10, 5)
colormap = ax.contourf(xg, yg, zg, levels,
cmap=plt.cm.Blues,
norm=plt.Normalize(vmax=z.max(), vmin=z.min()))

# plot data points
ax.plot(x, y, color="#444444", marker="o", linestyle="", markersize=10)

# add a colorbar
fig.colorbar(colormap,
orientation='vertical', # horizontal colour bar
shrink=0.85)

# graph extras: look at xlim and ylim
ax.set_xlim((0, 10))
ax.set_ylim((0, 10))
ax.set_aspect("equal", "box")

plt.show()

这是输出:

enter image description here

关于python - 在 Python 中使用对应于 X、Y 和 Z 的三个不同数组构建等高线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41093140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com