matplotlib绘制等直线


# 利用contour(),contourf()描绘等值线
# contourf()带有填充效果
def fig2():
    y, x = np.ogrid[-2:2:200j, -3:3:300j]
    z = x * np.exp(-x ** 2 - y ** 2)
    extent = [np.min(x), np.max(x), np.min(y), np.max(y)]
    plt.figure(figsize=(10, 4))
    plt.subplot(121)
    # 使用extent指定x轴和y轴的数据范围
    # 10 表示将整个函数的范围等值分为10个区间
    cs = plt.contour(z, 10, extent=extent)
    plt.clabel(cs)
    plt.subplot(122)
    plt.contourf(x.reshape(-1), y.reshape(-1), z, 20)
    plt.show()

matplotlib绘制等直线_第1张图片

# 隐函数的等值线绘制
def fig3():
    y, x = np.ogrid[-1.5:1.5:200j, -1.5:1.5:200j]
    f = (x ** 2 + y ** 2) ** 4 - (x ** 2 - y ** 2) ** 2
    plt.figure(figsize=(9, 4))
    plt.subplot(121)
    extend = [np.min(x), np.max(x), np.min(y), np.max(y)]
    # level参数表示最终回执的等值线的数目
    # 可以单独设置等值线的colors,linestyles,linewidths等参数
    cs = plt.contour(f, extend=extend, levels=[0, 0.1], colors=['b', 'r'], linestyles=['solid', 'dashed'],
                     linewidths=[2, 2])
    plt.subplot(122)
    # cs.collections表示等值线的列表每条等值线用LineCollection对象表示
    for c in cs.collections:
        data = c.get_paths()[0].vertices
        # c:LineCollection对象是一组曲线的集合,它可以表示蓝色实现那样有许多条线构成的等值线,它的get_paths()获得构成等值线的所有路径
        plt.plot(data[:, 0], data[:, 1], color=c.get_color()[0], linewidth=c.get_linewidth()[0])
    plt.show()

matplotlib绘制等直线_第2张图片

你可能感兴趣的:(matplotlib绘制等直线)