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

在绘图图中标记特殊日期

  •  1
  • adama  · 技术社区  · 7 年前

    我正在使用 Plotly API 在python中从数据集绘制折线图。例如,我有一个2018年的数据集。

    2018

    现在我想看看周末的天气是否比平日有更高的要求。我的目标是在星期六和星期天的图表上画线。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Sreeram TP    7 年前

    您可以创建一个标记图,然后覆盖一个线图以获得所需的输出,其中标记图必须与基于条件生成的颜色列表一起传递。

    要获得清晰的图像,请参见以下代码,

    # make a dummy time data
    
    x_values = pd.date_range(start=pd.Timestamp('2018-01-01'), end=pd.Timestamp('2019-01-01'), freq='1 D')
    
    # making a random time series
    y_values = np.random.randn(len(x_values))
    
    # making color list
    # red if the day is saturday or sunday else green
    
    colors = ['red' if int(pd.Timestamp(d).weekday()) >= 5 else 'green' for d in x_values]
    
    # make the plot
    
    trace_0 = go.Scatter(
        x=x_values,
        y=y_values,
        mode='markers',
        marker=dict(
            color = colors
        )
    )
    
    trace_1 = go.Scatter(
        x=x_values,
        y=y_values,
        mode='lines',
        marker=dict(
            color = 'black'
        )
    )
    
    layout = dict(
        title='Time Series with Rangeslider',
        xaxis=dict(
            rangeselector=dict(
                buttons=list([
                    dict(count=1,
                         label='1m',
                         step='month',
                         stepmode='backward'),
                    dict(count=6,
                         label='6m',
                         step='month',
                         stepmode='backward'),
                    dict(step='all')
                ])
            ),
            rangeslider=dict(
                visible = True
            ),
            type='date'
        )
    )
    
    fig = {
        'data': [trace_0, trace_1],
        'layout': layout,
    }
    
    py.iplot(fig, filename='Plot')
    

    enter image description here

    我还实现了一个范围滑块,如果不需要的话,可以从布局中编辑出来。