gpt4 book ai didi

Python:来自 3 个列表的 2D 等高线图,图中未生成轴

转载 作者:太空宇宙 更新时间:2023-11-04 03:55:19 25 4
gpt4 key购买 nike

我有 3 个列表。 x、y 和 z。我想创建一个等高线图,显示 z 的强度,并在点 (x,y) 处使用色标。

之前已经提出并回答了一个与此非常相似的问题(Python : 2d contour plot from 3 lists : x, y and rho?),但我遇到了 x 轴和 y 轴不显示的问题。

我的脚本:

import numpy as np
import matplotlib.pyplot as plt
import scipy.interpolate

x = [428, 598, 482, 351, 508, 413, 417, 471, 287, 578]
y = [17449761, 19201380, 19766087, 18535270, 21441241, 20863875, 18686389, 17776179, 16372016, 20170943]
n = [1.4406303782314329, 1.3248722314086339, 1.4064635429655712, 2.8806478042859767, 1.4067238073230157, 1.6444745940954972, 1.5180461138137205, 1.3819609357508074, 25.370740891787577, 1.3420941843768535]

# convert to arrays to make use of previous answer to similar question
x = np.asarray(x)
y = np.asarray(y)
z = np.asarray(n)
print "x = ", x
print "y = ", y
print "z = ", z

# Set up a regular grid of interpolation points
nInterp = 200
xi, yi = np.linspace(x.min(), x.max(), nInterp), np.linspace(y.min(), y.max(), nInterp)
xi, yi = np.meshgrid(xi, yi)

# Interpolate; there's also method='cubic' for 2-D data such as here
#rbf = scipy.interpolate.Rbf(x, y, z, function='linear')
#zi = rbf(xi, yi)
zi = scipy.interpolate.griddata((x, y), z, (xi, yi), method='linear')


plt.imshow(zi, vmin=z.min(), vmax=z.max(), origin='lower',
extent=[x.min(), x.max(), y.min(), y.max()])

plt.xlabel("X")
plt.ylabel("Y")
plt.colorbar()
plt.show()

这会生成以下图:

faulty_plot

我玩过 Python : 2d contour plot from 3 lists : x, y and rho? 中显示的 Python 脚本并且插值点的数量以及原始列表/数组的大小似乎会导致轴消失/无法绘制点的问题。

我不知道是什么导致了这个错误。非常感谢任何帮助。

最佳答案

如前所述here , imshow 默认使用 1 的纵横比。在您的情况下,这会导致情节严重缩放。在 imshow 中包含一个调整纵横比的语句 - 例如 aspect='auto' - 你会得到你期望的情节。

plt.imshow(zi, vmin=z.min(), vmax=z.max(), origin='lower',
extent=[x.min(), x.max(), y.min(), y.max()], aspect='auto')

结果是:

enter image description here

关于Python:来自 3 个列表的 2D 等高线图,图中未生成轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18892973/

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