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

Matplotlib:向轴中的默认颜色添加更多颜色。是否手动执行prop\U cycle()?

  •  2
  • Jan  · 技术社区  · 7 年前

    我只是把样本数增加到12 axes.prop_cycle() 默认只有10种颜色(我想是的 tab10 )。所以我得到了 IndexError: list index out of range

    我的简化代码。每个样本值在矩阵的每一行中表示

    matrix = np.random.randint(25, size=(12, 4))
    
    for p in xrange(12):
      ax_eachp = plt.subplot2grid((protcount, 1), (p, 0), rowspan=1, colspan=1)
      ax_eachp.plot(matrix[p], color=colors[p])
    

    如果我想在中保留前10种颜色,我可以手动再添加2种颜色吗 表10 ?或如何更改为其他 qualitative color maps ?

    1 回复  |  直到 7 年前
        1
  •  4
  •   ImportanceOfBeingErnest    7 年前

    就像链接的问题一样 Python Matplotlib/Basemap Color Cycling 显示,您可以设置轴的 prop_cycle 包括您喜欢的颜色。

    在这里,您可以使用tab10颜色,并将另外两种颜色添加到要在中使用的颜色列表中 prop\U循环

    import numpy as np
    import matplotlib.pyplot as plt
    
    fig, ax = plt.subplots()
    colors = list(plt.cm.tab10(np.arange(10))) + ["crimson", "indigo"]
    ax.set_prop_cycle('color', colors)
    
    for i in range(12):
        ax.plot([0,1],[i,i])
    
    plt.show()
    

    enter image description here

    然而,由于在这个问题中,您无论如何都要循环颜色,因此实际上不需要循环器。下面的结果与上面的结果相同。

    import numpy as np
    import matplotlib.pyplot as plt
    
    fig, ax = plt.subplots()
    colors = list(plt.cm.tab10(np.arange(10))) + ["crimson", "indigo"]
    
    for i in range(12):
        ax.plot([0,1],[i,i], color=colors[i])
    
    plt.show()