在曲线图中改变颜色比例

时间:2017-10-27 10:59:33

标签: python plotly

我使用以下函数绘制每年一行数据(覆盖以便我可以将一年与其他数据进行比较)。我想要的是每条线都有一个颜色定义为渐变而不是默认的色标(即2008年的浅蓝色系列到2017年的系列,深蓝色)。

这样做的正确方法是什么?我已经尝试过使用colorscale参数(参见代码),但是无法弄明白它的位置。

def plotPMByYear_plotly(df, minyear):
    allYears = list(set(list(df.Year)))
    allYears = [int(x) for x in allYears if str(x) != 'nan']
    data = []
    df = df[df["Year"]>=minyear]
    for year in allYears:
        yeardf = df[df["Year"] == year]
        trace = go.Scatter(
            x = yeardf['Month'],
            y = yeardf['Value'],
            mode = 'lines',
            name = year
        )
        colorscale='Jet',
        data.append(trace)
    iplot(data, filename='line-mode')

enter image description here

1 个答案:

答案 0 :(得分:1)

经过一番挖掘,我找到了解决方案,如下面的代码所示:

from colour import Color

def plotPMByYear_plotly(df, minyear,color1,color2):
    df = df[df["Year"]>=minyear]
    allYears = list(set(list(df.Year)))
    allYears = [int(x) for x in allYears if str(x) != 'nan']
    allYears.sort()
    colors = list(Color(color1).range_to(Color(color2),len(allYears)))
    colors = ['rgb'+str(x.rgb) for x in colors]
    data = []
    i = 0

    for year in allYears:
        yeardf = df[df["Year"] == year]
        trace = go.Scatter(
            x = yeardf['Month'],
            y = yeardf['Value'],
            mode = 'lines',
            marker=dict(color=colors[i]),
            name = year
        )
        i+=1
        data.append(trace)

    layout = go.Layout(
        title = 'Year on Year comparison'
    )

    fig = go.Figure(data=data, layout=layout)  
    iplot(fig, filename='line-mode')

例如可以使用以下参数:

plotPMByYear_plotly(dfM, 2008,'white','red')