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

matplotlib:曲线重叠时如何防止透明颜色重叠?

  •  2
  • sun0727  · 技术社区  · 6 年前

    例如,我们在这里用透明颜色绘制一条线

    import numpy as np
    import matplotlib.pyplot as plt
    
    a = np.array([1, 2, 3, 4, 5])
    b = 2*a
    plt.plot(a, b, 'blue', alpha=0.3)
    plt.show()
    

    enter image description here

    但我在同一行上绘制了多次,与自身重叠,所以它与自己重叠的越多,它就越暗。

    import numpy as np
    import matplotlib.pyplot as plt
    
    
    a = np.array([1, 2, 3, 4, 5])
    b = 2*a
    for i in range(3):
        plt.plot(a, b, 'blue', alpha=0.3)
    plt.show()
    

    enter image description here

    所以我怎样才能防止颜色重叠呢?

    提前谢谢大家!

    更新:为什么我需要这个?

    我正在做一个容忍度分析。这意味着,参数在一个范围内改变它们,并且我将为每个变化绘制曲线。然后我就能找到最坏的情况。

    enter image description here

    如果我选一种纯色但较浅的颜色。它看起来像:

    enter image description here

    如您所见,使用非转换颜色时,我无法观察节点,它被其他行覆盖。

    更新2:

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  2
  •   ImportanceOfBeingErnest    6 年前

    一行不覆盖它本身。因此,您可以将多个图连接成一个图。

    import numpy as np
    import matplotlib.pyplot as plt
    
    
    a = np.array([1, 2, 3, 4, 5])
    b = 2*a
    
    A = np.tile(np.append(a,[np.nan]),3)
    B = np.tile(np.append(b,[np.nan]),3)
    
    plt.plot(A, B, 'blue', alpha=0.3)
    plt.show()
    

    enter image description here

    这实质上是这个问题的倒数。 How can I draw transparent lines where the color becomes stronger when they overlap? ,而这种效果是不受欢迎的。