我发现我写的函数与matplotlib.pyplot中的轮廓函数的工作方式类似(但不完全相同)。我正在尝试阅读python以了解它的工作原理。
有人能指出我在代码中找到给定级别的第一个点并开始“跟随”它的位置吗?此外,它决定是否找到了第二个不同的地方,它跟随一组不同的点,它们也具有相同的水平?
例如,这些轮廓中的一些显示棕褐色从正无限到无限的地方。我想避免这些'零'。看看这些图:
def nanifbig(f, lo, hi):
g = f.copy()
g[g<lo] = np.nan
g[g>hi] = np.nan
return g
import numpy as np
import matplotlib.pyplot as plt
zero = np.array([0.0])
x = np.linspace(0, 8, 401)
y = np.linspace(0, 4, 201)
X, Y = np.meshgrid(x, y)
extent = [x[0], x[-1], y[0], y[-1]]
F = np.tan(X + 0.02*Y**2)
lo, hi = -2, 2
Fc = F.clip(lo, hi)
Fnanifbig = nanifbig(F, lo, hi)
Fnan = F.copy()
Fnan[:] = np.nan
plt.figure()
plt.subplot(2,2,1)
plt.imshow(Fc, origin='lower', extent=extent)
plt.contour(Fc, zero, linewidths=2, extent=extent)
plt.subplot(2,2,2)
plt.imshow(Fnanifbig, origin='lower', extent=extent)
plt.contour(Fc, zero, linewidths=2, extent=extent)
plt.subplot(2,2,3)
plt.imshow(Fnan, origin='lower', extent=extent)
plt.contour(Fc, zero, linewidths=2, extent=extent)
plt.subplot(2,2,4)
plt.plot(x, F[0,:])
plt.show()
非常感谢你的帮助!
答案 0 :(得分:0)