Matplotlib> 1线型,相同线,每线不同颜色

时间:2016-08-22 15:29:54

标签: python-3.x matplotlib colors linegraph

给出以下数据框和折线图:

import matplotlib.pyplot as plt
from cycler import cycler
import numpy as np
fig, ax=plt.subplots(1)
d=pd.DataFrame({'a':[1,2,3,4],
                'b':[2,3,4,5],
                'c':[3,4,5,6]})
colors=['r','g','b']
ax.set_prop_cycle(cycler('color', [colors]))
ax.plot(d[:3],'-ko',d[2:],'--ko')
plt.show()

enter image description here

您会注意到我尝试为每行分配一种颜色,但它无效。我也尝试过使用ax.plot中的colors参数。 看起来这应该是直截了当的。

提前感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:1)

您的代码中存在两个问题。

  1. 'k'中的'-ko''--ko'将颜色设置为黑色,因此我们需要将其删除

  2. colors已经是一个列表,但是你在set_prop_cycle的调用中再次将它放在方括号内,从而使它成为一个嵌套列表:[['r','g','b']]。删除那里的方括号,一切正常:ax.set_prop_cycle(cycler('color', colors))

  3. 因此,您的代码将如下所示:

    import matplotlib.pyplot as plt
    import pandas as pd
    from cycler import cycler
    import numpy as np
    fig, ax=plt.subplots(1)
    d=pd.DataFrame({'a':[1,2,3,4],
                    'b':[2,3,4,5],
                    'c':[3,4,5,6]})
    colors=['r','g','b']
    ax.set_prop_cycle(cycler('color', colors))
    ax.plot(d[:3],'-o',d[2:],'--o')
    plt.show()
    

    enter image description here