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

Matplotlib set\u color\u cycle与set\u prop\u cycles

  •  25
  • DanHickstein  · 技术社区  · 9 年前

    enter image description here

    set_color_cycle :

    ax.set_color_cycle([plt.cm.spectral(i) for i in np.linspace(0, 1, num_lines)])
    

    但是,最近我看到一个警告:

    MatplotlibDeprecationWarning: 
    The set_color_cycle attribute was deprecated in version 1.5. 
    Use set_prop_cycle instead.
    

    set_prop_cycle ,我可以达到同样的结果,但我需要 import cycler ,语法不那么紧凑:

    from cycler import cycler
    colors = [plt.cm.spectral(i) for i in np.linspace(0, 1, num_lines)]
    ax.set_prop_cycle(cycler('color', colors))
    

    我正在使用 正确地(以最有效的方式?)

    有没有更简单的方法将颜色循环设置为颜色映射?换句话说,有没有像这样的神秘功能?

    ax.set_colorcycle_to_colormap('jet', nlines=30)
    

    import numpy as np
    import matplotlib.pyplot as plt
    
    ax = plt.subplot(111)
    num_lines = 30
    
    colors = [plt.cm.spectral(i) for i in np.linspace(0, 1, num_lines)]
    
    # old way: 
    ax.set_color_cycle(colors)
    
    # new way:
    from cycler import cycler
    ax.set_prop_cycle(cycler('color', colors))
    
    for n in range(num_lines):
        x = np.linspace(0,10,500)
        y = np.sin(x)+n
        ax.plot(x, y, lw=3)
    
    plt.show()
    
    1 回复  |  直到 9 年前
        1
  •  28
  •   ImportanceOfBeingErnest    8 年前

    label ,即循环的属性。

    ax.set_prop_cycle('color', colors)
    

    不过,不需要导入和创建循环器;因此,在我看来,新方法的唯一缺点是它使调用长了8个字符。

    colors = plt.cm.Spectral(np.linspace(0,1,30))
    

    或组合使用

    ax.set_prop_cycle('color',plt.cm.Spectral(np.linspace(0,1,30)))