代码之家  ›  专栏  ›  技术社区  ›  gboffi

BoundaryNorm,意外行为

  •  0
  • gboffi  · 技术社区  · 1 年前

    我的代码:

    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib import colors
    
    x = y = np.linspace(0, 10, 51)
    X, Y = np.meshgrid(x, y)
    Z = X+Y # Z.min() => 0, Z.max() => 20 
    cf = plt.contourf(X, Y, Z,
                      levels=[5, 10, 15],
                      norm=colors.BoundaryNorm([5, 10, 15], 256, extend='both'))
    cb = plt.colorbar(cf, extend='both')
    plt.show()
    

    其输出:

    enter image description here

    我的期望:

    • 在主绘图中使用深蓝色的下三角形代替白色三角形,
    • 同上,一个亮黄色的上三角形,
    • 用上亮黄色三角形和下深蓝色三角形装饰的色条。

    我的问题是:

    我做错了什么?

    0 回复  |  直到 1 年前
        1
  •  1
  •   Jody Klymak    1 年前

    正如@JohanC所指出的,colorbar用轮廓做一些奇怪的事情。然而,在这种简单的情况下,为什么要使用BoundaryNorm?

    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib import colors
    
    x = y = np.linspace(0, 10, 51)
    X, Y = np.meshgrid(x, y)
    Z = X+Y # Z.min() => 0, Z.max() => 20
    cf = plt.contourf(X, Y, Z,
                      levels=[5, 10, 15], extend='both')
    cb = plt.colorbar(cf, extend='both')
    plt.show()
    

    做你想做的事。

    enter image description here