如何理解matplotlib.pyplot.contour的代码?

时间:2015-01-06 02:40:17

标签: python matplotlib

我发现我写的函数与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()

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

@Joe Kington提供了一个包含答案的评论。请求的代码位于C中,可以在https://github.com/matplotlib/matplotlib/blob/master/src/cntr.c

找到