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

不同颜色的matplotlib线取决于其他变量

  •  0
  • Mike  · 技术社区  · 4 年前

    income = [5000, 5005, 5010, 6000, 6060, 6120, 7000]
    job = [0, 0, 0, 1, 1, 1, 2]
    

    我试过这样的方法:

    plt.plot(income, c=job, cmap='RdBu')
    

    但这会导致“Line2D”对象没有属性“cmap”。我也试过:

    plt.scatter(range(0, len(income)), income, c=job, cmap='RdBu')
    

    不给线条也不理想。有没有办法在Matplotlib中创建一个像下面这样的图形(在Matplotlib中创建)?

    enter image description here

    0 回复  |  直到 4 年前
        1
  •  2
  •   trsvchn    4 年前

    我认为colormap对于连续数据很有用。对于离散颜色列表,最好使用离散颜色列表。因此,可以将颜色与类型变量配对:

    代码:

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.colors as colors
    
    
    income = np.array([5000, 5005, 5010, 6000, 6060, 6120, 7000])
    x = np.arange(len(y))
    job = np.array([0, 0, 0, 1, 1, 1, 2]).astype('int')
    
    # iterate over zipped job and color
    for j, c in zip(job, colors.TABLEAU_COLORS):
        plt.plot(x[job == j], income[job == j], 'o-', c=c)
    
    plt.show()
    

    绘图:

    plot

    TABLEAU_COLORS 但是你可以找到另一个颜色列表 here 如果你愿意的话。